Я создал PartialView и вот как я его называю.
<div id="bodyarea">
<div id="leftnavigationbar">
@Html.Partial("_SideBarMenu")
</div>
<div id="mainbody">
@RenderBody()
</div>
<div id="footer">
</div>
</div>
Вот фактический код PartialView:
@model Cumavi.ViewModels.SidebarNavigation
<ul>
@foreach (var category in Model.Categories)
{
<li>category.Name</li>
}
</ul>
Как видите, я использую пользовательскую модель ViewModel под названием SidebarNavigation, которая имеет следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Cumavi.Models;
namespace Cumavi.ViewModels
{
public class SidebarNavigation
{
public IEnumerable<Category> Categories { get; private set; }
public SidebarNavigation()
{
CategoryRepository categoryRepo = new CategoryRepository();
this.Categories = categoryRepo.FindAllCategories();
}
}
}
Проблема в том, что когда я запускаю приложение, я получаю исключение нулевой ссылки в цикле foreach.
Хотя я не понимаю причину. В ViewModel, SidebarNavigation, в конструкторе я фактически заполняю переменную. Есть предложения?
Edit:
Еще одна вещь, которую я заметил, заключается в том, что конструктор для моего класса ViewModel фактически никогда не вызывается. : S Должно быть, поэтому атрибут Categories имеет значение null. Предложения?
Редактировать 2:
Еще одна проблема! Я использую файл _Layout.cshtml для создания общего вида (главной страницы) приложения. Поскольку ни один контроллер не связан с этим файлом, как я могу передать ему модель? : S