При использовании DropDownList для того, как связать SelectList с моделью - PullRequest
1 голос
/ 18 мая 2011

Эта страница работает в два этапа:

Шаг 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);
}

1 Ответ

0 голосов
/ 21 сентября 2011

Я боролся с той же проблемой. Это не похоже на .net mvc3 позволяет вам сделать это без помощи jquery. Раскрывающиеся списки привязывают выбранный элемент к модели при публикации, но не все элементы в поле со списком. Вам придется перестраивать его каждый раз, когда вы передаете модель представления обратно в представление.

Другим способом потери выпадающего списка является использование ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...