【发布时间】:2013-01-31 21:59:17
【问题描述】:
我有一个 Employee 实体,我将其绑定到 MVC3/Razor 应用程序中的“编辑”视图。 Employee 实体具有OccupationTypeId 的属性。 OccupationTypeId 指向包含多个查找值的 OccupationType 表。自然的选择是使用@Html.DropDownListFor 来呈现包含职业列表的<select> 标记。
OccupationType 表架构相当标准:Id, Name, Description, IsEnabled。由于可以禁用 OccupationTypes,我希望 OccupationTypeId 下拉菜单仍然呈现禁用选项,以便用户在禁用时始终可以看到他们的选择,但用户无法选择禁用选项。换句话说,用户不能将现有的OccupationTypeId 更改为禁用的选项。
我考虑过创建一个@Html 扩展方法来使用选项构建我的<select> 标记,并简单地将disabled 属性附加到禁用的选项。我认为这将是直截了当的......
但是,禁用的选定选项似乎不会回传到控制器方法。换句话说,Employee.OccupationTypeId 在我发布到编辑时将为空。
有什么方法可以改变这种行为,或者它是内置在 MVC 3 中的吗?我考虑过使用隐藏字段,但是如果需要 OccupationTypeId 并且我启用了验证呢?
还有其他人遇到过这种情况吗?
谢谢
【问题讨论】:
-
该行为没有内置在 MVC3 中,它内置在浏览器如何回发表单中。只有启用时,才会包含表单控件(即便如此,并非所有控件都像复选框一样总是包含在内)。
-
以下帖子将为您指明正确的方向:stackoverflow.com/questions/11351554/…
-
你试过只读吗?
标签: html asp.net-mvc asp.net-mvc-3 razor