我有以下课程:
public class Widget
{
public string Name { get; set; }
}
GenericModel
public class GenericModel<T>
{
public List<T> Data { get; set; }
}
我的控制器操作是:
public ActionResult Simple()
{
var model = new GenericModel<Widget>()
{
Data = new List<Widget>
{
new Widget {Name = "a"}
}
};
return View(model);
}
我的观点是:
@model MyApp.GenericModel<MyApp.Widget>
@{
ViewBag.Title = "Simple";
}
<h2>Simple</h2>
@Html.DisplayFor(m=>m)
我在Views / Shared / DisplayTemplate文件夹中有一个名为GenericModel.cshtml的文件:
@model MyApp.GenericModel<MyApp.Widget>
<ul>
@for (int i = 0; i < Model.Data.Count; i++ )
{
<li>
@Html.EditorFor(m=> Model.Data[i].Name)
</li>
}
</ul>
找不到此视图。我看到当我打印出我的模型类型的名称时,我得到“GenericModel 1". Seeing that, I renamed my template "GenericModel
1.cshtml”。这看起来有点像黑客,是否有更简单的方法来找到这个显示模板而不诉诸于此?
答案 0 :(得分:0)
您必须在viewstart中设置它:
@Code
Layout = "~/Views/Shared/DisplayTemplate.cshtml"
End Code
注意:以上是VB。
你也可以通过你的控制器传递它:
public ActionResult Simple()
{
var model = new GenericModel<Widget>()
{
Data = new List<Widget>
{
new Widget {Name = "a"}
}
};
return View("", "DisplayTemplate", model);
}