加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在视图中显示包含MVC中继承的模型

发布时间:2020-12-16 09:23:32 所属栏目:asp.Net 来源:网络整理
导读:我有一组不同类型的“好处”,但都继承自BaseBenefit类.该列表 BaseBenefit然后在视图上使用.为了呈现它们,这里最好的做法是什么? 我虽然在视图中进行了检查,但是那时似乎打破了“愚蠢的IU”的规则.我可以为每个好处包含一个属性,以便它具有真实类型的枚举,
我有一组不同类型的“好处”,但都继承自BaseBenefit类.该列表< BaseBenefit>然后在视图上使用.为了呈现它们,这里最好的做法是什么?

我虽然在视图中进行了检查,但是那时似乎打破了“愚蠢的IU”的规则.我可以为每个好处包含一个属性,以便它具有真实类型的枚举,但我仍然需要检查哪个是if的.

任何的想法?

解决方法

您可以使用显示模板.所以在主视图中:

@Html.DisplayFor(x => x.Benefits)

其中,Benefits是List< BaseBenefit>类型的视图模型上的属性.现在,您所要做的就是为不同的可能类型定义显示模板:

?/查看/共享/ DisplayTemplates / SpecificBenefit1.cshtml:

@model SpecificBenefit1
...

?/查看/共享/ DisplayTemplates / SpecificBenefit2.cshtml:

@model SpecificBenefit2
...

显示模板的位置和名称很重要.它们必须位于?/ Views / Shared / DisplayTemplates文件夹中,或者如果它们不在控制器之间重用,您也可以在?/ Views / SomeController / DisplayTemplates文件夹中定义它们.模板的名称必须与列表中元素的类型相同.

在可枚举属性的主视图中使用DisplayFor时,ASP.NET MVC将自动为此列表的每个元素调用相应的显示模板.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读