0

我有一堆桌子。每个表都有一个“状态”列。该列具有字符 A 或 I。A= 活动且 I= 非活动。

我有一个对应于每个表的创建视图。我想显示一个下拉框,其中显示两个值 - Active 和 Inactive,然后相应地映射它们。

我知道我可以在需要状态下拉列表的每个视图中执行以下操作

@Html.DropDownListFor(model => model.status, new SelectList(new[] { new { ID = "A", Desc = "Active" }, new { ID = "I", Desc = "Inactive" } }, "ID", "Desc"))

但是,如果明天我决定再添加一个状态,我将不得不更改每个视图。

另一种选择是创建一个字典并将其传递给视图模型,如本文所述

然而,这意味着我必须为我的每个模型创建一个视图模型来容纳状态列表。

还有其他方法可以实现吗?

4

2 回答 2

1

我建议为每个独特的视图使用视图模型。从长远来看,它使 UI 更易于使用和维护。

根据我的经验,视图模型方法可能会被极端化并适得其反。例如,在为客户实体创建 VM 时,我不会重新创建具有客户实体所有相同属性的 CustomerVM。相反,我只是在包含整个客户实体的 CustomerVM 上创建一个客户属性。有些人可能不同意这种方法,因为如果视图没有显示所有客户实体信息,我可能会向视图公开更多信息而不是它需要的信息。没错,但我喜欢快速且易于实施和维护的解决方案。

你永远不知道将来需要什么。随着时间的推移,我发现这种方法是最灵活的解决方案。

因此,您可以为所有具有公共查找列表的视图创建一个基本视图模型,并让您的新视图模型从这个基本 VM 继承。

这是一种方法。:)

于 2012-05-31T19:23:55.893 回答
0

以下链接可能有助于绑定 mvc 中的下拉列表

http://www.c-sharpcorner.com/UploadFile/deveshomar/ways-to-bind-dropdown-list-in-Asp-Net-mvc/

于 2013-12-03T05:41:13.327 回答