Я Я создал контроллер под названием TestSitesController, который был автоматически сгенерирован из класса модели «Сайт» в моей модели Entity Framework (шаблон, который генерирует действия и представления чтения/записи). Единственное, что я изменил, это то, что в трех местах для некоторых методов был параметр Guid id = null по умолчанию. Я только что избавился от знака «= null», все работает нормально.
Вот пример того, что я изменил
Код: Выделить всё
public ActionResult Delete(Guid id = null)
{
//....
}
Код: Выделить всё
public ActionResult Delete(Guid id)
{
//....
}
Я заметил, что все мои представления (Создание, Удаление, Подробности и Редактирование) используете @model MVCWeb.MyEntities.Site, с которым меня сейчас вполне устраивает; но в представлении Index.cshtml я заметил, что он использует
Код: Выделить всё
@model IEnumerable
Поэтому я создал очень простая модель представления под названием TestSitesViewModel
Код: Выделить всё
public class TestSitesViewModel
{
// Eventually this will be added to a base ViewModel to get rid
// of the ViewBag dependencies
[Display(Name = "Web Page Title")]
public string WebPageTitle;
public IEnumerable Sites;
// Other entities, IEnumerables, or properties go here
// Not important for this example
}
Код: Выделить всё
public ActionResult IndexWithViewModel()
{
var vm = new TestSitesViewModel();
vm.WebPageTitle = "Sites With Composite View Model";
vm.Sites = db.Sites.ToList();
return View(vm);
}
Код: Выделить всё
@model IEnumerable
Код: Выделить всё
@model MVCWeb.Models.TestSitesViewModel
Код: Выделить всё
@Html.DisplayNameFor(model => model.WebPageTitle)
@Html.DisplayFor(model => model.WebPageTitle)
Код: Выделить всё
@foreach (var item in Model) {
Код: Выделить всё
@foreach (var item in Model.Sites) {
Код: Выделить всё
[Display(Name = "Web Page Title")]
public string WebPageTitle;
Код: Выделить всё
@Html.DisplayNameFor(model => model.Abbreviation)
@Html.DisplayNameFor(model => model.DisplayName)
Подробнее здесь: https://stackoverflow.com/questions/159 ... -viewmodel