我正在尝试使用DataAnnotationsModelBinder,以便在ASP.NET MVC中使用数据注释进行服务器端验证.
只要我的ViewModel只是一个具有直接属性的简单类,一切都可以正常工作
public class Foo
{
public int Bar {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
然而,DataAnnotationsModelBinder导致一个NullReferenceException试图用一个复杂的时候ViewModel,如
public class Foo
{
public class Baz
{
public int Bar {get;set;}
}
public Baz MyBazProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
对于渲染多个LINQ实体的视图来说,这是一个很大的问题,因为我更喜欢使用ViewModel包含多个LINQ实体的自定义s而不是无类型的ViewData数组.
该DefaultModelBinder不会有这个问题,所以它似乎是一个错误DataAnnotationsModelBinder.这有什么解决方法吗?
编辑:一种可能的解决方法当然是在ViewModel类中公开子对象的属性,如下所示:
public class Foo
{
private Baz myBazInstance;
[Required]
public string ExposedBar
{
get { return MyBaz.Bar; }
set { MyBaz.Bar = value; }
}
public Baz MyBaz
{
get { return …Run Code Online (Sandbox Code Playgroud)