我在ASP.NET MVC 2中有一种情况,我有一个表单,其字段基于视图模型提供的信息,但其发布的数据是由较细的编辑模型表示的数据的子集。我想将简单数据注释验证添加到编辑模型中,但由于视图基于视图模型,因此我不确定如何继续。
答案 0 :(得分:1)
查看模型和控制器操作参数不必相同。
在您的情况下,这意味着您可能正在使用更丰富的模型类来生成视图(甚至可能发布超出需要的更多信息),但您的控制器操作将仅使用来自该发布数据的一些信息来填充更简单的应用程序模型对象实例。没问题。只要字段命名足以正确填充属性。
您可能有以下两个类:
public class User
{
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class Person: User
{
public string Name { get; set; }
public string Address { get; set; }
}
然后您的视图将使用Person
,您的控制器操作将具有User
类型的参数。精细。它会起作用。
这些类也不需要相互继承。我刚刚在这个简单的例子中做到了这一点,因为这样他们都共享公共属性名称。但是,只要发布的字段名称能够模拟绑定到控制器动作参数类属性,它们就不必以任何形式或形式相关。