相关疑难解决方法(0)

DataAnnotationsModelBinder如何使用自定义ViewModel?

我正在尝试使用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)

data-binding asp.net-mvc viewmodel

5
推荐指数
1
解决办法
3855
查看次数

标签 统计

asp.net-mvc ×1

data-binding ×1

viewmodel ×1