Joh*_*ith 7 c# asp.net-mvc asp.net-mvc-4
我希望我的视图如下:
@model MyProgram.Models.DocumentList
@{
ViewBag.Title = "View1";
}
@foreach (MyProgram.Models.Document doc in Model.GetDocs())
{
<p>doc.Content</p>
}
Run Code Online (Sandbox Code Playgroud)
这让我相信我需要一个包含另一个模型列表的模型.所以在一个只包含这个的项目中我会:
/Model/DocumentList.cs
/Model/Document.cs
Run Code Online (Sandbox Code Playgroud)
这是正确的还是有更好的方法?
使用视图模型,您可以根据需要将尽可能多的模型传递到视图。我还使用视图模型来处理 POST 等的验证。因此,在您的情况下,您可以执行以下操作:
你的视图模型
public class MyViewModel
{
public string PageTitle { get; set; }
public DocumentList DocList { get; set; }
// You could use your DocumentList object here, or if you
// don't want to, just pass a List<T> of Document
public List<Document> DocList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您的看法
@model MyViewModel
@{
ViewBag.Title = Model.PageTitle;
}
@foreach (var doc in Model.DocList)
{
<p>doc.Content</p>
}
Run Code Online (Sandbox Code Playgroud)
MVC 的功能远不止于此,例如显示和编辑器模板,因此我会在网上查找一些涵盖 MVC 要点的优秀教程。
编辑
公平地说,读完这篇文章后,您已经有点遵循这个原则了,这就是DocumentList您的视图模型(并且您并不真正需要GetDocs方法,只需拥有一个集合属性,除非您在集合上执行逻辑返回之前即是)。
希望这个答案可以帮助您澄清一些事情?
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |