适用于多种型号的MVC显示模板

摇摆

为了保持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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于多种型号的MVC显示模板

来自分类Dev

Mediawiki:显示列表不适用于信息框模板

来自分类Dev

适用于多种环境的log4j模板文件

来自分类Dev

条款适用于多种模式的地方

来自分类Dev

Vlookup不适用于多种条件

来自分类Dev

猫鼬save()不适用于所有型号

来自分类Dev

型号不适用于新的Ember数据升级

来自分类Dev

NPOCO Save 不适用于特定型号

来自分类Dev

按ID进行JavaScript隐藏和显示的元素不适用于多种情况

来自分类Dev

适用于模板的SendGrid SMTP API

来自分类Dev

模板功能仅适用于VS

来自分类Dev

角度平移不适用于模板

来自分类Dev

AngularJS模板不适用于Spring

来自分类Dev

CSS仅适用于模板区域

来自分类Dev

设置模板不适用于主页

来自分类Dev

在火焰模板中显示光标数据不适用于 Meteor.call()

来自分类Dev

适用于多种设备的Android通用启动画面

来自分类Dev

Android深度链接不适用于多种方案

来自分类Dev

适用于多种口味的应用程序的Crashlytics分发

来自分类Dev

适用于多种语言的OpenCart 3 Nginx配置

来自分类Dev

onclick事件不适用于多种功能

来自分类Dev

泛型@mixin,适用于多种多样的Sass

来自分类Dev

适用于多种设备的Android通用启动画面

来自分类Dev

适用于MVC模型的VaryByParam

来自分类Dev

Django Flatpages模板标签不适用于模板继承

来自分类Dev

仅适用于旧型号华为机型通过ADB获取IMEI

来自分类Dev

一个控制器适用于2种型号,是正确的导轨方式吗?

来自分类Dev

模板化链接不适用于-O2,但适用于-O0

来自分类Dev

函数模板适用于本地lambda,但不适用于其他函数