MVC 一种类型,一页 - 两种不同的 DisplayFor

MVC One Type, One Page - Two different DisplayFor

我正在构建一个内部网,主页上覆盖着显示大量不同数据位的小部件。我有一个 Home.cs 模型,其中包含所需数据的各种 IEnumerables 属性。 我一直在使用 View 文件夹 DisplayFor 模板来呈现该数据。 我现在遇到一个问题,需要以两种不同的方式显示两个不同的员工列表。

我可以使用局部视图来呈现其中一个列表,或者可能继承 class 并使用不同的模板。继承似乎需要做更多的工作,我想知道是否有人知道 MVC 设计使用的特定方式或者可能只是任何人的首选解决方案?

只有两个不同的模板,然后使用 DisplayForthis overload 指定每个模板要使用的模板:

@Html.DisplayFor(m => m.StaffList, "StaffTemplate1")

@Html.DisplayFor(m => m.StaffList, "StaffTemplate2")

如果您想为每个员工列表使用不同的显示模板,您可以指定要在 DisplayFor 调用中使用的模板:

@Html.DisplayFor(m => m.StaffListOne, "StaffTemplateOne");
@Html.DisplayFor(m => m.StaffListTwo, "StaffTemplateTwo");

或者您可以将 UIHint 属性添加到模型属性中:

[UIHint("StaffTemplateOne")]
public IEnumerable<Staff> StaffListOne { get;set; }

[UIHint("StaffTemplateTwo")]
public IEnumerable<Staff> StaffListTwo { get;set; }