Я пытаюсь создать ViewModel, который будет использоваться с домашней страницей View. ViewModel имеет некоторые свойства, как это:Не удается получить доступ к свойствам ViewModel
public class HomeViewModel
{
public IEnumerable<NewsItem> NewsItems { get; set; }
}
В главном контроллере я создаю экземпляр HomeViewModel и затем установить свойства HomeViewModel перед отправкой его на Начальном Посмотреть, как это:
public ActionResult Index()
{
HomeViewModel homeVM = new HomeViewModel();
NewsReader newsReader = new NewsReader();
homeVM.NewsItems = newsReader.GetNewsItems();
return View(homeVM);
}
А потом в представлении я пытаюсь сделать это:
@foreach(var item in Model.NewsItems)
{
@Html.Display(m => m.Title)
}
Однако я получаю:
ViewModels.HomeViewModel does not contain a definition for NewsItems
Где я ошибаюсь и как его исправить?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Site.Services.News;
using Site.Models;
using Site.ViewModels;
using Site.DAL;
using Site.Services.Products;
namespace Site.Controllers
{
public class HomeController : Controller
{
private DashboardContext db = new DashboardContext();
public ActionResult Index()
{
HomeViewModel homeVM = new HomeViewModel();
NewsReader newsReader = new NewsReader();
homeVM.NewsItems = newsReader.GetNewsItems();
//NewsReader newsReader = new NewsReader();
//var newsItems = newsReader.GetNewsItems();
return View(homeVM);
}
Heres вид:
@model IEnumerable<Site.ViewModels.HomeViewModel>
@{
ViewBag.Title = "Home";
}
<div class="jumbotron">
<p class="lead">Overview</p>
</div>
<div class="row">
<div class="col-md-4">
<h2>Customers</h2>
</div>
<div class="col-md-4">
<h2>Sales</h2>
<p>@Html.ActionLink("View »", "Index", "SalesRecords", null, new { @class = "btn btn-primary" })</p>
</div>
<div class="col-md-4">
<h2>News</h2>
@foreach(var item in Model.NewsItems)
{
@Html.Display(item.Title)
}
<p>@Html.ActionLink("Read »", "Index", "News", null, new { @class = "btn btn-primary" })</p>
</div>
</div>
Можно что GetNewsitems() возвращает null? Код, который вы опубликовали, выглядит отлично – br4d
Хм, единственное, что я могу придумать, это то, что ваше представление '@ Model' указывает на другой' HomeViewModel', который не имеет свойства 'NewsItems'? –
На самом деле сообщение об ошибке кажется, что 'HomeViewModel' является вложенным классом' ViewModels'? (Если ошибка не показывает пространство имен, но было бы странно начинать с 'ViewModels.').Но класс, который вы создаете экземпляр в контроллере, кажется, не является вложенным классом –