首页 > 解决方案 > 不同实体类型的局部视图模型

问题描述

假设我有这 2 个模型,但数据验证属性的差异很小:

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但验证和绑定不起作用。

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

标签: asp.net-mvcbindingmodelpartial-views

解决方案


推荐阅读