0

我在 ASP.NET MVC 2 中有一种情况,我有一个表单,其字段基于视图模型提供的信息,但其发布的数据是由更精简的编辑模型表示的数据的子集。我想在编辑模型中添加简单的数据注释验证,但由于视图是基于视图模型的,我不确定如何进行。

4

1 回答 1

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,并且您的控制器操作将具有 type 的参数User。美好的。它会起作用的。

这些类也不需要相互继承。我刚刚在这个简单的示例中这样做了,因为这样它们都共享共同的属性名称。但除此之外,它们不必以任何形式或形式相关,只要发布的字段名称能够建模绑定到控制器操作参数类属性。

于 2011-04-15T01:14:13.200 回答