невозможно передать модель другому частичному представлению на странице просмотра

Моя страница просмотра с частичным просмотром:

@model App.Models.UpcomingPassedEventViewModel

<section class="container clearfix">
@Html.Partial("_CommentBox")

и мой частичный вид _CommentBox имеет раскрывающийся список следующим образом:

@model QlutoApp.Models.Neighbourhood

@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location")

Как вы можете видеть выше, частичное представление зависит от Models.Neighbourhood, а страница просмотра зависит от Models.UpcomingPassedEventViewModel.

Теперь мой контроллер, куда я пытаюсь отправить данные через ViewBag:

  public ActionResult MyFolder()
    {
        ViewBag.NeighbourhoodId = new SelectList(allNeighbourhood(), "Id", "NeighbourhoodName");
        int currentUserId = this.User.Identity.GetUserId<int>();
        var events = this.db.Events
            .Where(e => e.AuthorId == currentUserId)
            .OrderBy(e => e.StartDateTime)
            .Select(e => new EventsViewModel()
            {
                StartDateTime = e.StartDateTime,
                Title = e.Title,    
            });

        var upcomingEvents = events.Where(e => e.StartDateTime > DateTime.Now);
        var passedEvents = events.Where(e => e.StartDateTime <= DateTime.Now);
        return View(new UpcomingPassedEventViewModel()
        {
            UpcomingEvents = upcomingEvents,
            PassedEvents = passedEvents,
            allNeighbourhood = new SelectList(allNeighbourhood(), "Id", "NeighbourhoodName")
        });
    }

Моя модель просмотра здесь:

   public class UpcomingPassedEventViewModel
    {
    public IEnumerable<EventsViewModel> UpcomingEvents { get; set; }
    public IEnumerable<EventsViewModel> PassedEvents { get; set; }
    public Neighbourhood Neighbourhood { get; set; }
    public SelectList allNeighbourhood { get; set; }
    }

Я передаю все, что требуется страницей просмотра, через эту модель представления, но все равно она не работает. На других страницах просмотра проблем не было, поскольку они не были сильно привязаны к какому-либо классу модели, поэтому данные легко передаются в частичное представление. Но на этом на конкретной странице отображается ошибка. Ошибка:

  The model item passed into the dictionary is of type 'App.Models.UpcomingPassedEventViewModel', but this dictionary requires a model item of type 'App.Models.Neighbourhood'.

где я ошибаюсь. Пожалуйста, помогите мне.


person duke    schedule 21.12.2015    source источник
comment
Нет, вы сказали: Я передаю все, что требуется для страницы просмотра, но вы не передаете требуемое свойство Neighbourhood.   -  person Rahul Singh    schedule 21.12.2015
comment
Сообщение говорит само за себя. Вам нужно использовать @Html.Partial("_CommentBox", Model.Neighbourhood), потому что ваша часть ожидает модель типа Neighbourhood   -  person    schedule 21.12.2015
comment
Элемент модели, передаваемый в словарь, имеет тип App.Models.UpcomingPassedEventViewModel, но для этого словаря требуется элемент модели типа App.Models.Neighbourhood. все то же сообщение после прохождения Model.Neighbourhood @StephenMuecke   -  person duke    schedule 21.12.2015
comment
Тогда это потому, что vakle вашего свойства Neighbourhood равно null - вы должны инициализировать его, прежде чем передавать его в представление (или вы можете использовать @Html.Partial("_CommentBox", new Neighbourhood())   -  person    schedule 21.12.2015
comment
у меня все работает, спасибо @StephenMuecke   -  person duke    schedule 21.12.2015


Ответы (1)


У вас отсутствует экземпляр вашей модели Neighborhood в частичном представлении.

Это сделает работу.

@model App.Models.UpcomingPassedEventViewModel

<section class="container clearfix">
@Html.Partial("_CommentBox", Model.Neighbourhood )
person rustem    schedule 21.12.2015