假设我们有一个包含单个下拉列表的视图的视图模型。视图模型应该有两个字段:
区分它们是否合理,例如将它们分组如下:
public class ExampleVM
{
#region GET
public List<SelectListItem> Items { get; set; }
#endregion
#region POST
public int? SelectedItem { get; set; }
#endregion
}
或许还有另一种区分这些领域的方式?
答案 0 :(得分:5)
理论上这些是单独的模型。一个用于视图渲染(称为视图模型),另一个用于输入处理(称为输入模型)。如果您愿意,您甚至可以为每个类定义不同的类。实际上,这些模型在实践中通常在很多方面彼此相似,保留两个非常相似的模型类是多余的。
考虑单个文本框表单的情况。视图模型是一个字符串,表示文本框的当前值。输入模型是具有相同名称的单个字符串,表示用户的输入(如果有)。因此,在建模时,您可以使用单个字符串属性创建两个类,或者可以为两个类使用一个类。
您的下拉列表似乎不同,因为您需要两个属性,一个用于呈现列表,另一个用于已发布的选定项。但它似乎只是这样。只要您不仅需要用户输入新值而且还要更新现有值,您将发现您还使用选定值属性进行查看(代码中的GET部分)。所以再次重用。
有关ASP.NET MVC模型的更深入解释,请查看Dino Esposito的this article。
结论:是的,你的区别是合理的,但有些人可能认为这是不切实际或过剩的。