问题描述
||
我在ASP.NET MVC 2中遇到一种情况,我有一个表单,该表单的字段基于视图模型提供的信息,但是其发布的数据是由更薄的编辑模型表示的该数据的子集。我想向编辑模型添加简单的数据批注验证,但是由于视图基于视图模型,因此我不确定如何继续。
解决方法
视图模型和控制器操作参数不必相同。
在您的情况下,这意味着您可能正在使用更丰富的模型类来生成视图(甚至可能发布比所需更多的信息),但是控制器操作将仅使用该发布数据中的一些信息来填充更简单的应用程序模型对象实例。没问题。只要字段命名就足以正确填充属性。
您可能有以下两个类:
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
类型的参数。精细。会的。
这些类也不需要彼此继承。在这个简单的示例中,我只是这样做了,因为这样它们就可以共享相同的属性名称。但是,否则,它们不必以任何形式关联,只要发布的字段名称能够建模绑定到控制器操作参数类属性即可。