MVC 一种类型,一页 - 两种不同的 DisplayFor
MVC One Type, One Page - Two different DisplayFor
我正在构建一个内部网,主页上覆盖着显示大量不同数据位的小部件。我有一个 Home.cs 模型,其中包含所需数据的各种 IEnumerables 属性。
我一直在使用 View 文件夹 DisplayFor 模板来呈现该数据。
我现在遇到一个问题,需要以两种不同的方式显示两个不同的员工列表。
我可以使用局部视图来呈现其中一个列表,或者可能继承 class 并使用不同的模板。继承似乎需要做更多的工作,我想知道是否有人知道 MVC 设计使用的特定方式或者可能只是任何人的首选解决方案?
只有两个不同的模板,然后使用 DisplayFor
的 this 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; }
我正在构建一个内部网,主页上覆盖着显示大量不同数据位的小部件。我有一个 Home.cs 模型,其中包含所需数据的各种 IEnumerables 属性。 我一直在使用 View 文件夹 DisplayFor 模板来呈现该数据。 我现在遇到一个问题,需要以两种不同的方式显示两个不同的员工列表。
我可以使用局部视图来呈现其中一个列表,或者可能继承 class 并使用不同的模板。继承似乎需要做更多的工作,我想知道是否有人知道 MVC 设计使用的特定方式或者可能只是任何人的首选解决方案?
只有两个不同的模板,然后使用 DisplayFor
的 this 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; }