我有一个模特:
public class Dog: IPet
{
// IPet Implementation
public string Name { get; set; }
}
和DisplayTemplates/Dog.cshtml
@model IPet // note this is the interface, not the concrete Dog
<label>@Model.Name</label>
这非常有效,直到我将文件重命名为IPet.cshtml
为止;然后绑定失败。我想对Dog
,Cat
,Rat
,Goat
和Gnu
使用相同的DisplayTemplate,它们都是IPet
的实现。
如何使绑定生效?
答案 0 :(得分:2)
默认情况下,视图的名称是传递给template-helper的对象类型的名称。因此需要明确定义模板名称:
@Html.DisplayFor(x => x.Dog, "IPet")
当需要渲染包含 IPet 实例的模型时,请使用UIHint属性:
public partial class Zoo
{
[UIHint("IPet")]
public Dog Dog;
}
模板:
@model Zoo
@Html.DisplayForModel()