Guy*_*y Z 3 model-view-controller asp.net-mvc view
我有一组"好处",它们有不同的类型,但都是从BaseBenefit
类中继承的.这List<BaseBenefit>
然后在一个视图中使用.为了呈现它们,这里最好的做法是什么?
我虽然在视图中进行了检查,但是那时似乎打破了"愚蠢的IU"的规则.我可以为每个好处包含一个属性,以便它有一个enum
真正的类型,但我仍然需要检查哪个是if的.
任何的想法?
您可以使用显示模板.所以在主视图中:
@Html.DisplayFor(x => x.Benefits)
Run Code Online (Sandbox Code Playgroud)
Benefits
您的视图模型类型的属性在哪里List<BaseBenefit>
.现在,您所要做的就是为不同的可能类型定义显示模板:
~/Views/Shared/DisplayTemplates/SpecificBenefit1.cshtml
:
@model SpecificBenefit1
...
Run Code Online (Sandbox Code Playgroud)
~/Views/Shared/DisplayTemplates/SpecificBenefit2.cshtml
:
@model SpecificBenefit2
...
Run Code Online (Sandbox Code Playgroud)
显示模板的位置和名称很重要.它们必须位于〜/ Views/Shared/DisplayTemplates文件夹中,或者如果它们不在控制器之间重用,您也可以在~/Views/SomeController/DisplayTemplates
文件夹中定义它们.模板的名称必须与列表中元素的类型相同.
在可枚举属性的主视图中使用DisplayFor时,ASP.NET MVC将自动为此列表的每个元素调用相应的显示模板.
归档时间: |
|
查看次数: |
741 次 |
最近记录: |