我正在尝试构建一个ASP.NET MVC 2应用程序。我想将数据传递给控制器的视图。当它只是一个数据结构时,我能够传递它。在控制器中:
private ArticlesDBEntities _db = new ArticlesDBEntities();
public ActionResult Articles()
{
return View(_db.ArticleSet.ToList());
}
在视图中,我像这样遍历列表:
<div id="demo1">
<% foreach (var item in Model) { %>
<ul>
<li id="<%= Html.Encode(item.Id) %>">
<a href="#"><%= Html.Encode(item.Title) %></a>
<ul>
<li id="phtml_2">
<a href="#">Child node 1</a>
</li>
<li id="phtml_3">
<a href="#">Child node 2</a>
</li>
</ul>
</li>
</ul>
<% } %>
</div>
(子节点目前是出于测试原因,没有真正的角色)
但是,我现在想要处理用户尝试访问Home / Articles / Id时的场景,而不仅仅是传递文章列表(用于填充jsTree),还有文章本身,所以我可以展示它同样。但是,当我尝试创建一个像这样的ViewData对象时:
public ActionResult Articles()
{
ViewData["articlesList"] = _db.ArticleSet.ToList();
return View();
}
我无法找到如何在视图中迭代它。
答案 0 :(得分:1)
就传递多个数据项而言,你可以使用视图模型(首选方式)或viewdata来完成。如果你想通过View模型传递它,你可以做类似
的事情public class ArticlVM
{
public Article Myarticle{get;set;}
public IEnumerable<ArticleSet> Artcileset{get; set;}
}
你可以填充这个视图模型并将其传递给视图
在视图中你可以像
一样访问它<%=Model.Article.articlName%>
<%=Model.Article.articlDescription%>
<%foreach(var m in Model.Articleset){%>
<label><%=m.Property1%></label>
<%}%>
迭代ViewData [“key”]你必须将它强制转换为相应的对象,如
<%=foreach(var m in (ArticleSet)ViewData["Articles"]){%>
<label><%=m.Property1%></label>
<%}%>
答案 1 :(得分:0)
在您的视图中,您应该可以
<% foreach(var item in ViewData["articlesList"]) %>
另一种方法是创建一个既包含文章又包含列表的新视图模型类:
class ArticleViewModel {
public Article Article { get;set;}
public IEnumerable<Article> Articles { get;set;}
}
并将其传递到您的视图中。然后,您可以通过Model
属性访问它,您将获得强大的输入。