В моем приложении используется Asp.Net Core. EF Core. Я использую ViewModel, а не модель EF и шаблон репозитория. Моя модель просмотра я создал себя. Он не подключен к EF или что-то еще. Может быть, именно здесь я ошибаюсь?Список или выбор списка продолжает возвращать ошибку ссылки на объект
Edit New ViewModel:
public partial class CommodityViewModel
{
public CommodityViewModel()
{
}
public IEnumerable<SelectListItem> CommoditiesItems { get; set; }
public Guid Oid { get; set; }
public string Code { get; set; }
public string Description { get; set; }
}
EDIT: Новый интерфейс Вот мой интерфейс:
public interface ICommodityRepository
{
IEnumerable<CommodityViewModel> GetCommodities();
}
Мой вопрос на моем интерфейсе можно использовать IEnumerable для списка или выберите список?
Edit New Repository:
public class CommodityRepository : ICommodityRepository
{
private readonly CommodityViewModel _context;
public CommodityRepository(CommodityViewModel context)
{
_context = context;
}
public IEnumerable<CommodityViewModel> GetCommodities()
{
return _context.CommoditiesList.ToList();
}
}
Вот мой контроллер:
public class CommoditiesController : Controller
{
private readonly ICommodityRepository _commoditiyRepository;
public CommoditiesController(ICommodityRepository commodityRepository)
{
_commoditiyRepository = commodityRepository;
}
public IActionResult CommoditiesList()
{
return View(_commoditiyRepository.GetCommodities());
}
}
И на мой взгляд, который я использую раскладку, чтобы отобразить падение вниз, потому что я хочу его доступным с любой страницы. (Я знаю, что я должен поставить его в частичном виде я просто хочу, чтобы заставить его работать в первую очередь..):
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
<ul class="dropdown-menu alert-dropdown">
<li>
<select asp-for="Code" asp-items="@(new SelectList(Model.CommoditiesList,"Code","Description"))">
<option>Please select one</option>
</select>
</li>
</ul>
</li>
Здесь ошибка я не могу получить мимо:
NullReferenceException : В экземпляре объекта не задана ссылка на объект. MoveNext в _Layout.cshtml, линия 134
<!-- Here: Line 134--><select asp-for="Code" asp-items="@(new SelectList(Model.CommoditiesList,"Code","Description"))">
<option>Please select one</option>
</select>
Я действительно не знаю, где я буду неправильно. Я создал экземпляр нового списка в методе репозитория. Я даже создавал новый список в ViewModel. Может ли кто-нибудь указать мне в правильном направлении? Благодарю.
ли ваш макет имеет модель? Похоже, код использует 'Model.Commodities' – Shyju