Я использовал следующий учебник, чтобы помочь мне создать RSS Reader в моем приложении ASP.NET MVC3 Razor:
Однако, в отличие от учебного примера, я хочу, чтобы RSS-канал отображался на каждой странице, и поэтому добавил его в свой файл макета /Views/Shared/_Layout.cshtml
.
В настоящее время у меня есть только 2 представления на моем сайте, и чтобы заставить RSS Reader работать с обоими представлениями, у меня есть следующий код в моем HomeController
:
public class HomeController : Controller
{
//
// GET: /Index/
public ActionResult Index()
{
return View(CT.Models.RssReader.GetRssFeed());
}
public ActionResult About()
{
return View(CT.Models.RssReader.GetRssFeed());
}
}
Исходя из моего опыта работы с WebForms, я бы просто добавил код RSS Reader в код главной страницы позади, и он автоматически работал бы на каждой странице.
Есть ли контроллер для страниц макета, который позволяет мне делать то же самое?
Как я могу заставить это работать при каждом вызове страницы макета, ничего не возвращая?
EDIT: Следуя совету @Sebastian, я добавил этот код в частичное представление, удалил CT.Models.RssReader.GetRssFeed()
из return View()
и включил это в свой файл макета:
@Html.Partial("_MyPartialView")
Код в этом частичном представлении:
<ul>
@foreach (var item in Model)
{
<li>
<a href="@item.Link" target="_blank">@item.Title</a>
</li>
}
</ul>
Однако я не получаю ошибку времени выполнения:
В экземпляре объекта не задана ссылка на объект.
Ошибка в строке @foreach (var item in Model)