AminMhmdi Ответов: 1

Передача нескольких моделей для просмотра с несколькими частичными видами


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

Что я уже пробовал:

я создаю несколько разделов в своем основном индексе и добавляю к нему частичные
<section class="news">
            <h1 class="tit">Last News</h1>
            <section class="line"></section>
            @Html.Partial("_NewsPartialView")
</section>

<section class="downloads">
            <h1 class="tit">Last PC sofwtare </h1>
            <section class="line"></section>
            @Html.Partial("_LastSoftwarePartialView")
</section>

<section class="downloads">
            <h1 class="tit">Last Android sofwtare </h1>
            <section class="line"></section>
            @Html.Partial("_LastAndroidSoftwarePartialView")
</section>


в контроллере я добавляю несколько методов действия для каждого частичного представления

public PartialViewResult _NewsPartialView()
       {
           return PartialView(db.Newses.Take(5).ToList());
       }

public PartialViewResult _LastSoftwarePartialView()
       {
           return PartialView(db.software.Take(5).ToList());
       }

public PartialViewResult _LastAndroidSoftwarePartialView()
       {
           return PartialView(db.DroidSoftware.Take(5).ToList());
       }

и вот одна из моих частичным видом
@model IEnumerable<Myapp.Models.News>


<section class="content-part">
@foreach (var item in Model)
{
    <section class="newbook-content">
      @Html.DisplayFor(modelItem => item.NewsTitle)


    @Html.DisplayFor(modelItem => item.NewsSummery)


    @Html.DisplayFor(modelItem => item.NewsPublishTime)


    @Html.DisplayFor(modelItem => item.NewsBody)


    @Html.ActionLink("Details", "Details", new { id = item.NewsId })
    </section>
}
</section>


но я получаю System.NullReferenceException: ссылка на объект не установлена на экземпляр исключения объекта
кроме того, я не хочу использовать viewmodel
есть ли какой-нибудь способ вызвать метод действия при визуализации каждого частичного представления?

1 Ответов

Рейтинг:
11

F-ES Sitecore

Html. Partial вводит представление напрямую, он не вызывает действие на вашем контроллере, поэтому модель в ваших частичных представлениях все равно равна нулю. Если вы хотите ввести результат действия, используйте Html.Вместо этого Action или Html. RenderAction (google для разницы, есть много статей, которые объясняют это). Это вызовет ваше действие, которое, в свою очередь, вернет правильный частичный вид с заполненной моделью.