为了保持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
创建具有两个属性的接口:
public interface ISameModel
{
bool Prop1 { get; }
bool Prop2 { get; }
}
public class ListModel : ISameModel
{
public bool Prop1 {get;set;}
public bool Prop2 {get;set;}
}
public class DisplayModel : ISameModel
{
public bool Prop1 {get;set;}
public bool Prop2 {get;set;}
}
然后将此接口用作模板中的模型
@model ISameModel
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句