1

MVC4の部分ビューに頭を悩ませています。現在、ユーザープロファイルページがあり、ユーザーIDを含む別のテーブルの各レコードを表示する部分ビューが必要です。

これは、コントローラーで関数を呼び出すために使用しているHTMLヘルパーです。

   @Html.Action("DisplayArticles", "Articles")

これは、ユーザーの記事を表示するためにArticleコントローラーで呼び出すメソッドです。

   [HttpGet]
   [ChildActionOnly]
    public ActionResult DisplayArticles()
         {
           int id = WebSecurity.CurrentUserId;
           var articleList = new List<Article>();

           //Article articles = (from j in db.Article
           //         where j.UserID == id
           //         select j).ToList();

           //articleList.AddRange(articles);
           foreach (Article i in db.Article)
           {
               if (i.UserID == id)
               {
                   articleList.Add(i);
               }
           }


           return PartialView("_DisplayWritersArticle", articleList);
         }

私の部分ビュー_DisplayWriterArticleは、単にHTMLヘルパーを使用してデータを表示します。

@model Writegeist.Models.Article

    <table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.UserID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Type)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Content)
        </th>
    </tr>
    <tr>
        <th>
            @Html.DisplayFor(model => model.UserID)
        </th>
        <td>
            @Html.DisplayFor(model => model.Title)
        </td>
        <td>
            @Html.DisplayFor(model => model.Type)
        </td>
        <td>
            @Html.DisplayFor(model => model.Content)
        </td>
    </tr>

</table>

私の問題は、リストをビューに渡す方法です。リストが認識されず、エラーが発生します。

> The model item passed into the dictionary is of type
> 'System.Collections.Generic.List`1[Writegeist.Models.Article]', but
> this dictionary requires a model item of type
> 'Writegeist.Models.Article'.

変えたら

return PartialView("_DisplayWritersArticle", articleList);

return PartialView("_DisplayWritersArticle", new Writegeist.Models.Article());

articleListが正しい形式ではないと思います。誰かが私を正しい方向に向けることができますか?ありがとう

4

2 に答える 2

1

あなたのパーシャルビューは単一の記事を期待しています、あなたはそれにそれらのリストを与えています。

モデルを記事のリストに変更します。

@model List<Writegeist.Models.Article>

次に、リストをループしてすべてを表示する必要があります。

<table>
@foreach(Article article in Model) {
    <tr>
        <th>
            @Html.DisplayNameFor(a => article.UserID)
        </th>
        <th>
            @Html.DisplayNameFor(a => article.Title)
        </th>
        <th>
            @Html.DisplayNameFor(a => article.Type)
        </th>
        <th>
            @Html.DisplayNameFor(a => article.Content)
        </th>
    </tr>
}
</table>
于 2013-02-20T23:30:13.447 に答える
0

問題は、私が見ているように、あなたはリストを渡しているが、それは単なる記事であると見ているということです。

あなたの

@model Writegeist.Models.Article to @model List<Writegeist.Models.Article>

次に、そのリストを繰り返し処理して、期待するデータを取得します。

于 2013-02-20T23:36:01.200 に答える