MVC 4 Передача данных в частичное представление — формат

У меня возникают проблемы с частичным просмотром MVC4. В настоящее время у меня есть страница профиля пользователя, и я хочу иметь частичное представление, отображающее каждую запись из другой таблицы, которая содержит их идентификатор пользователя.

Это помощник 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 не в правильном формате. Может кто-то указать мне верное направление? Спасибо

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>
1

Другие решения

Проблема в том, что я вижу, что вы передаете список, но вы говорите, что это просто статья.

Измени свой

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

Затем вы захотите перебрать этот список, чтобы получить ожидаемые данные.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector