0

我有一个模型:

public class Dog: IPet
{
    // IPet Implementation
    public string Name { get; set; }
}

和一个 DisplayTemplateDisplayTemplates/Dog.cshtml

@model IPet // note this is the interface, not the concrete Dog
<label>@Model.Name</label>

在我将文件重命名为IPet.cshtml; 然后绑定失败。我想为DogCat、和使用相同的 DisplayTemplate Rat,所有这些都是.GoatGnuIPet

我怎样才能让绑定工作?

4

1 回答 1

2

默认情况下,视图的名称是传递给模板助手的对象类型的名称。所以需要显式定义模板名称:

@Html.DisplayFor(x => x.Dog, "IPet")

当需要渲染包含IPet实例的模型时,使用UIHint -attribute:

public partial class Zoo
{
    [UIHint("IPet")]
    public Dog Dog;

}

模板:

@model Zoo
@Html.DisplayForModel()
于 2019-05-16T23:52:29.473 回答