将自定义列表/字典绑定到 MVC 视图中的下拉列表



我有一堆表格。每个表都有一个"状态"列。该列具有字符 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/

最新更新