不同实体类型的局部视图模型

时间:2018-09-26 13:19:28

标签: asp.net-mvc binding model partial-views

比方说,我有这两个模型,它们的数据验证属性略有不同:

public Dog
{
    int Id{get;set;}
    [StringLength(5)]
    [Remote("IsDogExists", "ControllerName", HttpMethod = "POST", ErrorMessage = "This dog already exists")]
    string Name{get;set;}
}
public Cat
{
    int Id{get;set;}
    [StringLength(10)]
    [Remote("IsCatExists", "ControllerName", HttpMethod = "POST", ErrorMessage = "This cat already exists")]
    string Name{get;set;}
}

现在,我想使用相同的Partial View创建一个新的Cat和一个新的Dog。 基本上,Partial View看起来像:

@Html.ValidationMessageFor(m => m.Name, "", new { @class = "text-danger" })
@Html.DisplayFor(m => m.TextToDisplay)
@Html.TextBoxFor(m => m.Name)

我已经尝试过像:

这样的继承
public abtract class Animal
{
    public abstract int Id{get;set;}
    public abstract string Name{get;set;}
}
public Dog:Animal
{
    public override int Id{get;set;}
    [StringLength(5)]
    [Remote("IsDogExists", "ControllerName", HttpMethod = "POST", ErrorMessage = "This dog already exists")]
    public override string Name{get;set;}
}

使用@model Animal作为部分视图模型,但是验证和绑定无效。

那么,我必须使用哪种结构(局部视图模型和模型类)才能使用不同的模型呈现相同的局部视图并保持验证和绑定?

0 个答案:

没有答案