我有一堆表格。每个表都有一个"状态"列。该列具有字符 A 或 I。A = 活动,I = 非活动。
我有一个对应于每个表的创建视图。我想显示一个下拉框,显示两个值 - 活动和非活动,然后相应地映射它们。
我知道我可以在每个需要状态下拉列表的视图中执行以下操作
@Html.DropDownListFor(model => model.status, new SelectList(new[] { new { ID = "A", Desc = "Active" }, new { ID = "I", Desc = "Inactive" } }, "ID", "Desc"))
但是,如果明天我决定再添加一个状态,我将不得不更改每个视图。
另一种选择是创建一个字典,并通过视图模型传递它,如本文所述
但是,这意味着我必须为每个模型创建一个视图模型,以适应状态列表。
还有其他方法可以实现吗?
我建议为每个唯一的视图使用视图模型。 从长远来看,它使 UI 更易于使用和维护。
根据我的经验,视图模型方法可以走到极端,并适得其反。 例如,在为客户实体创建 VM 时,我不会重新创建具有客户实体所有相同属性的客户 VM。 相反,我只需在包含整个客户实体的客户虚拟机上创建一个客户属性。 有些人可能不同意这种方法,因为如果视图未显示所有客户实体信息,我可能会向视图公开比它需要的更多的信息。 这是真的,但我喜欢快速、易于实施和维护的解决方案。
你永远不知道将来需要什么。 随着时间的推移,我发现这种方法是最灵活的解决方案。
因此,您可以为具有通用查找列表的所有视图创建基本视图模型,并让新的视图模型继承自此基础虚拟机。
这是一种方法。 :)
以下链接可能有助于在 mvc 中绑定下拉列表
http://www.c-sharpcorner.com/UploadFile/deveshomar/ways-to-bind-dropdown-list-in-Asp-Net-mvc/