【发布时间】:2014-07-16 08:31:28
【问题描述】:
为了跟上 DRY 原则,我在多个视图中生成了一些 html,我将它移到了显示模板中。
由于不同的视图有不同的模型,我怎样才能使显示模板通用?属性名称相同。
假设我有这两个模型:
public class ListModel
{
public bool Prop1 {get;set;}
public bool Prop2 {get;set;}
}
public class DisplayModel
{
public bool Prop1 {get;set;}
public bool Prop2 {get;set;}
}
这是我的显示模板 - 我怎样才能使它更通用 - 我需要它能够接受具有相同属性名称的任何模型?
@model ListModel
{
if(Model.Prop1)
{
<div>Prop1!</div>
}
if(Model.Prop2)
{
<div>Prop2!</div>
}
}
这是我的 2 个视图:列表和显示
列表:
@model ListModel
@DisplayFor(@Model, "CustomDisplayTemplate")
显示:
@model DisplayModel
@DisplayFor(@Model, "CustomDisplayTemplate") //will currently break as the custom display template expects a ListModel
【问题讨论】:
-
你最好有一个基础(抽象)模型类或接口,两个视图模型都从该类或接口继承并以此为模板。
标签: asp.net-mvc razor asp.net-mvc-5