У меня есть проект MVC 3, и я застрял при привязке представления к модели в Post.
Вот моя модель:
public class DBViewModel
{
public ProductionDatabasesViewModel PDBViewModel { get; set; }
public IList<string> SelectedNames { get; set; }
public DBViewModel()
{
SelectedNames = new List<string>();
PDBViewModel = new ProductionDatabasesViewModel();
}
}
Мой взгляд: (урезанная версия)
@model Web.Models.DBViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
@Html.ListBoxFor(x => x.SelectedNames, new SelectList(Model.SelectedNames))
<input id="button-submit" name="SubmitButton" type="submit" value="Submit" />
</fieldset>
}
Фрагмент контроллера:
[HttpPost]
public ActionResult Database(DBViewModel model)
{
var users = model.SelectedNames; //<---- empty, the count is 0 always.
}
В представлении есть возможность выбрать пользователей из поля автозаполнения, а затем скрипт jQuery, который добавит выбранные имена в список в представлении выше. Это все работает, поэтому я могу искать пользователей, а затем нажать кнопку «Добавить», чтобы добавить пользователей в список. Но я сталкиваюсь с проблемами при нажатии кнопки Отправить. Пользователи, которые были добавлены в представление (список выбора в представлении), не привязаны к модели. Так что на пост модель. Выбранные имена пустые. Я также пробовал Request ["SelectedNames"] и Request.Form ["SelectedNames"], и все они нулевые.
У меня большой опыт работы с обычными веб-формами, но я все еще изучаю MVC, поэтому любая помощь будет высоко оценена.
[UPDATE]
Я обновлю вопрос завтра в моё время, но, похоже, что элементы в списке будут привязаны к модели представления, если я выберу их. Я выясню это завтра. Но большое спасибо за все комментарии, помощь и предложения.