Эта страница работает в два этапа:
Шаг 1. Пользователь нажимает кнопку «Индекс» (), а список выбора заполняется приложениями из базы данных.
Шаг 2 - они выбирают приложениеиз списка, который отправляет страницу назад, которая перезагружает страницу с добавленными сведениями о приложении
Ошибка: при выполнении этого действия и переходе к шагу 2 появляется сообщение об ошибке: элемент ViewDataс ключом ApplicationId типа «System.Int32», но с типом «IEnumerable».
Это происходит потому, что Model.ApplicationList теперь имеет значение null, поскольку не имеетПривязав к модели, когда форма была опубликована, могу ли я заставить ее сделать это?
Просмотр:
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.ApplicationId, Model.ApplicationList, "Select an Application" , new { @onchange = "this.form.submit();" })
}
Модель:
public class IndexModel
{
public int ApplicationId { get; set; }
public List<SelectListItem> ApplicationList { get; set; }
public string Detail { get; set}
}
Контроллер:
public ActionResult Index()
{
using (var dc = new Entities())
{
var model = new IndexModel();
model.ApplicationList = new List<SelectListItem>();
var applications = dc.Applications.OrderBy(a => a.Name).ToList();
foreach (var application in applications)
{
model.ApplicationList.Add(new SelectListItem
{
Selected = false,
Text = application.Name,
Value = application.Id.ToString()
});
}
model.ApplicationId = 1;
return View(model);
}
}
[HttpPost]
public ActionResult Index(IndexModel model)
{
model.Detail = GetDetail(model.ApplicationId);
return View(model);
}