2010-09-30 110 views
1

我想構建一個ASP.NET MVC 2應用程序。我想將數據傳遞給控制器​​的視圖。當它只有一個數據結構時,我能夠傳遞它。在控制器:ASP.NET MVC從控制器傳遞幾個數據實例來查看

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(); 
    } 

我無法確定如何在視圖中遍歷它。

回答

1

就傳遞多個數據項而言,您可以使用視圖模型(首選方法)或viewdata執行此操作。如果u想通過查看模型,通過它ü可以做這樣的事情

public class ArticlVM 
{ 
    public Article Myarticle{get;set;} 
    public IEnumerable<ArticleSet> Artcileset{get; set;} 
} 

u能填充這個視圖模型,並通過其在視圖中查看

U可以像訪問

<%=Model.Article.articlName%> 
<%=Model.Article.articlDescription%> 
<%foreach(var m in Model.Articleset){%> 
    <label><%=m.Property1%></label> 
<%}%> 

迭代ViewData [「鍵」]你必須將其投到相應的對象,如

<%=foreach(var m in (ArticleSet)ViewData["Articles"]){%> 

<label><%=m.Property1%></label> 
<%}%> 
+0

非常感謝你!但我在控制器中究竟是如何「填充這個視圖模型」? – 2010-09-30 19:58:49

+0

好的,我設法填充視圖模型。但是,我試圖在視圖中訪問它,但是當我編寫「Model」時,智能感知不允許我選擇「Article」或「Articleset」。我是否在視圖中或其他位置丟失了#include或「using」或<@page ...>? – 2010-09-30 20:24:33

+0

好吧,添加繼承=「...」,現在它的工作! :-) – 2010-09-30 21:27:17

0

在你看來,你應該能夠做到

<% foreach(var item in ViewData["articlesList"]) %> 

另一種方法是創建一個能夠支撐的文章和郵件列表的新視圖模型類:

class ArticleViewModel { 
    public Article Article { get;set;} 
    public IEnumerable<Article> Articles { get;set;} 
} 

和把它傳遞給你的觀點。然後你可以通過Model屬性訪問它,你會得到強大的輸入。

相關問題