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が正しい形式ではないと思います。誰かが私を正しい方向に向けることができますか?ありがとう