且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MVC Html.DisplayFor用于派生模型的列表

更新时间:2023-01-07 22:07:41

通过使用 BaseViewModel 的模板而不是 List< BaseViewModel> 的模板解决了该问题.这样,我可以将任何派生类型传递给模板(例如:Derived1ViewModel,Derived2ViewModel).

Solved the problem by using a template for BaseViewModel instead of List<BaseViewModel>. In this way, I can pass any derived type to the template (ex: Derived1ViewModel, Derived2ViewModel).

示例:

@*Derived1 View*@
@model List<Derived1ViewModel>
@for(var i = 0; i < Model.Count; i++)
{
    int i1 = i;
    @Html.DisplayFor(model=>model[i1], "MyTemplate")
}

@*Derived2 View*@
@model List<Derived2ViewModel>
@for(var i = 0; i < Model.Count; i++)
{
    int i1 = i;
    @Html.DisplayFor(model=>model[i1], "MyTemplate")
}

@*Template*@
@model BaseViewModel
<p>It works @Model.Name</p>