1

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

ビューでそれを反復する方法を見つけることができませんでした。

4

2 に答える 2

1

複数のデータ項目を渡すことに関する限り、ビューモデル(推奨される方法)またはビューデータを使用してそれを行うことができます。ビューモデルを介して渡したい場合は、次のようなことができます

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>
<%}%>
于 2010-09-30T19:00:19.603 に答える
0

あなたのビューでは、できるはずです

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

別のアプローチは、記事とリストの両方を保持する新しいビュー モデル クラスを作成することです。

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

それをビューに渡します。その後、プロパティを介してアクセスでき、Model強力な型付けが得られます。

于 2010-09-30T18:58:40.983 に答える