下拉列表更好地作为 ViewBag 或模型 C#/.NET MVC4 的一部分

2023-11-21

可能很简单,但我似乎错过了一些东西。

两种型号:

public class Hardware
{
    [Required]
    public int Id { get; set; }

    public int SerialNum { get; set; }
    public int ProductNum { get; set; }
    public string Notes { get; set; }
    public DateTime PurchaseDate { get; set; }
    public DateTime WarrantyExpiration { get; set; }

    public virtual Manufacturer Manufacturer { get; set; }
}

public class Manufacturer
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public virtual ICollection<Hardware> Hardware { get; set; }
}

当我进入“硬件创建”视图时,我希望能够从制造商下拉列表中进行选择,并且在提交时应该在硬件和所选制造商之间建立关系。

目前,我一直在使用以下内容在控制器中构建 selectList

SelectList selectList = new SelectList(db.Manufacturers, "Id", "Name");
ViewBag.selectList = selectList;

然后将其投射到视图中:

@Html.DropDownListFor(model => model.Manufacturer, ViewBag.selectList as SelectList)\

然而,似乎应该有更好的方法来做到这一点 - 也许创建一个从具有 SelectList 类型属性的 Hardware 继承的 viewModel ?


随着您的应用程序变得越来越复杂,您将看到您的 MVC 应用程序变成 M-VM-V-C,VM 是专用的 ViewModel,通常会添加 UI 层生成 UI 所需的所有内容。

在这种情况下,我个人不会采用继承,因为您的 ViewModel 不是模型的专门版本。这正是您的 UI 创建视图所需的(这实际上取决于您)。

我的 ViewModel 看起来像这样:

public class HardwareVm
{
     public Hardware Hardware { get; set; }
     public IEnumerable<SelectListItem> Manufacturers { get; set; }
} 

在视图中:

@Html.DropDownListFor(model => model.Hardware.Manufacturer,  Manufacturers)

控制器:

var manufacturers = db.Manufacturers.Select(m => new SelectListItem {Text = m.Name, Value = m.Id });
var model = new HardwareVm { Manufacturers = manufacturers };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

下拉列表更好地作为 ViewBag 或模型 C#/.NET MVC4 的一部分 的相关文章

  • 函数“sum”的隐式声明在 C99 中无效

    我一直在寻找解决方案 但没有找到任何有帮助的东西 我收到以下错误 Implicit declaration of function sum is invalid in C99 Implicit declaration of function
  • 快速 log2(float x) 实现 C++

    我需要在 C 中非常快速地实现 log2 float x 函数 我发现了一个非常有趣的实现 而且速度非常快 include
  • ptrace和waitpid有什么关系?

    我正在练习使用ptrace但我不太了解它和之间的关系waitpid 这是我的测试程序 int main int argc char argv pid t pid 22092 if ptrace PTRACE ATTACH pid NULL
  • 如何进行Visual Studio格式字典初始化?

    所有 Visual Studio 也包括 2012 不格式化以下内容 messageProcessor new Dictionary
  • 如何使用 libclang 判断成员函数是 const 还是 volatile?

    我有一个实例CXCursor同类CXCursor CXXMethod 我想知道这个函数是否是const or volatile 例如 class Foo public void bar const void baz volatile voi
  • C 中的双重否定:是否保证返回 0/1?

    Is x 标准保证返回0 1 请注意 我是not询问 C 其中定义了 bool 类型 是的 在 C99 中 请参阅 6 5 3 3 4 逻辑非运算符的结果 是0如果其操作数的值比较 不等于0 1如果其操作数的值比较等于 0 结果具有类型in
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 公共基类打破了元组的空基类优化

    gcc 4 7 1 对元组进行空基类优化 我认为这是一个非常有用的功能 然而 这似乎有一个意想不到的限制 include
  • 代码块 - 使用大地址感知标志进行编译

    如何使用以下命令在 64 位系统上编译 32 位应用程序LARGE ADRESS AWARE使用代码块标记 我需要使用超过 2GB 的内存 应该是添加的情况 Wl large address aware到链接标志 我不使用 CodeBloc
  • 是否可以在对Where 的调用中调用命名方法?

    我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能影响ftp support red gate com ebooks under the hood of net memory management part1 pdf f
  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L
  • 哪个更快?按引用传递与按值传递 C++

    我认为按引用传递应该比按值传递更快 因为计算机不复制数据 它只是指向数据的地址 但是 请考虑以下 C 代码 include
  • 具有 MVC4 风格捆绑的 Intellisense

    到目前为止我找不到问题或解决这个问题 我确信我错过了一些简单的事情 我有一个带有一堆缩小的 CSS 的样式包 并且我正在用里面的类来装饰 HTML 元素 一切都运转良好 然而 Intellisense 和 ReSharper 都因为 CSS
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • C++ 更改屏幕方向问题 -- DEVMODE dmDisplayOrientation DMDO_90 undefined

    我似乎无法编译一些 C 代码 我正在翻转显示器的方向 但 VS2008 告诉我 DMDO 90 和 DMDO 270 无法识别 error C2065 DMDO 90 undeclared identifier error C2065 DM
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • PowerShell 与 MongoDB C# 驱动程序方法不兼容?

    由 C 泛型引起的最新 MongoDB 驱动程序的问题 Cannot find an overload for GetCollection and the argument count 1 我可能可以使用其他没有泛型的 GetCollect
  • 如何在RcppParallel中调用用户定义的函数?

    受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont

随机推荐

  • 在 OSX Catalina 上安装用于 gem 安装的 Ruby 开发工具

    我知道这个问题有很多例子 我已经完成了这些答案中的所有内容 但 4 小时后却一无所获 我正在尝试在 Catalina 10 15 7 上安装 gem 并获得非常流行的 System Library Frameworks Ruby frame
  • 如何在 WPF 中删除鼠标悬停时按钮的发光

    我在 WPF 中使用一个简单的按钮 我已经在背景上放置了按钮的图像 我的问题是 当我将鼠标指针移动到按钮时 它会获得默认发光并覆盖作为背景给出的图像
  • Hive 中的增量/增量负载

    我有以下用例 我的应用程序有一个表多年数据 in RDBMSD B 我们已经用过sqoop将数据获取到 HDFS 并加载到按以下分区的 hive 表中年 月 现在 应用程序每天都会更新并将新记录插入 RDBMS 表中 这些更新的记录可以跨越
  • powershell 2.0重定向文件处理异常

    我正在寻找解决方案The OS handle s position is not what FileStream expected Do not use a handle simultaneously in one FileStream a
  • 为什么 LINQ 中的 Union 函数不删除重复条目?

    我正在使用 VB NET 我知道 Union 通常按 ByRef 工作 但在 VB 中 字符串通常被视为原始数据类型 因此 问题就在这里 Sub Main Dim firstFile secondFile As String resulti
  • 为什么这个 Perl 6 feed 操作符是一个“虚假语句”?

    我把这个例子取自第 10 天 Perl 6 2010 降临节日历的 Feed 操作员随着轻微的变化 uc为了 ucfirst不再存在了 my rakudo people
  • Angularjs 忽略时区

    有没有更好的方法来忽略 Angularjs 中的时区 2014 01 18 14 30 00 而不是 2014 01 18 15 30 00 function Scoper scope scope datum 2014 01 18T14 3
  • C++ 中的惰性求值

    C 没有对惰性求值的本机支持 如 Haskell 那样 我想知道是否可以以合理的方式在 C 中实现惰性求值 如果是的话 你会怎么做 编辑 我喜欢康拉德鲁道夫的回答 我想知道是否可以以更通用的方式实现它 例如通过使用参数化的惰性类 它本质上适
  • Spring中的Websocket身份验证和授权

    我一直在努力正确实现 Stomp websocket 验证 and 授权与Spring Security 对于后代 我将回答我自己的问题以提供指导 问题 Spring WebSocket 文档 用于身份验证 看起来不清楚 ATM 恕我直言
  • apache上的vue-router,子目录中的SPA,只能通过重定向访问页面

    所以我有一个在 apache 开发服务器上设置的客户端 Vue 应用程序 我这样做是为了配合生产环境 该应用程序位于子目录中 我在 vue router 上设置了 base 选项以进行匹配 如果我导航到我的虚拟主机根目录 它会正确重定向 但
  • 如何获取iframe响应头?

    有没有办法获取 iframe onload 的响应标头 我已经用谷歌搜索过它 但实际上我找不到任何有用的东西 并不真地 如果 iframe 位于同一域中 您可以访问其文档对象 其中包含一些有用的信息 例如document referrer
  • 如何将暴露给 COM 互操作的 .NET 对象标记为单线程?

    在 C 中定义 COM 可见类时 我可以在头文件中定义支持的线程模型 threading single line coclass default IComInterface threading single vi progid Exampl
  • Sass 使用与号 (&) 与类型选择器组合父级

    我在 Sass 中筑巢时遇到问题 假设我有以下 HTML p href class item Text p p href class item Text p a href class item Link a 当我尝试将样式嵌套在以下内容中时
  • 将基本类型转换/转换为派生类型

    我通过派生现有的 NET 框架类来扩展它 如何将基类型的对象转换为派生类型 public class Results Framework methods public class MyResults Results Nothing here
  • JButton ActionListener - GUI 仅在单击 JButton 后更新

    我的 JButton ActionListener 遇到问题 我在另一个类中定义了一个 doTheCleaning 方法 当调用该方法时 会对我的 GUI 进行一系列更改 public void doTheCleaning change i
  • 如何根据角度2中的按钮单击移动div滚动位置

    在 app component html 文件中 我有一个带有水平滚动的 div 元素和两个按钮 即 下一个 和 上一个 根据这些按钮单击我想移动滚动 应用程序组件 html div style height 200px div div d
  • 在 .NET Core 中使用 System.Windows

    我在 Visual Studio 2019 中有一个项目 正在从 NET Framework 4 6 迁移到 NET Core 3 1 我使用了微软的指南来移植我的项目 此处描述 我跑了便携性分析仪它表明 该项目是 100 可移植的 但对
  • CSS 响应式网格布局:网格列跨度打破最小最大

    我有一个像这样的整洁的响应式网格 grid template columns repeat auto fill minmax 200px 1fr 这使得每个网格项目的宽度至少为 200px 其中一项 红色 的宽度是其两倍 如下所示 grid
  • 如何在简单的类文件中获取 ServletContext 对象?

    我正在创建一个简单的网络应用程序 我需要获取对该类中 ServletContext 对象的引用 我怎么才能得到它 您最好将其作为参数传递给对象的构造函数 或使用 setter 方法设置它 事实上 您可以获取与您的对象相关的上下文属性 并通过
  • 下拉列表更好地作为 ViewBag 或模型 C#/.NET MVC4 的一部分

    可能很简单 但我似乎错过了一些东西 两种型号 public class Hardware Required public int Id get set public int SerialNum get set public int Prod