Я новичок в MVC2 / 3, так что имейте это в виду.Кроме того, использование Ajax или jQuery НЕ является опцией.
У меня есть веб-страница, где пользователь должен выбрать элемент из выпадающего списка, а затем нажать кнопку «Фильтр».(Нажатие на эту кнопку просто вызовет действие POST по умолчанию в моем контроллере и вернет отфильтрованный список результатов.
У меня все работает, кроме одной проблемы, с которой я столкнулся. Когда действие Filter завершено и возвращает управление обратноНа мой взгляд, содержимое раскрывающегося списка потеряно (т. е. равно нулю). Результаты возвращаются без проблем, просто мой раскрывающийся список пуст - поэтому пользователь не может выбрать другой элемент из списка.
Я должен заново заполнить выпадающий список в действии «Фильтр» или есть более чистый способ сделать это?
Вот снимок моего кода:
Моя ViewModel
public class MyViewModel {
[DisplayName("Store")]
public IEnumerable<Store> StoreList { get; set; }
public string SelectedStore { get; set; }
}
My View (Index.cshtml)
@using (Html.BeginForm()) {
<h2>Search</h2>
@Html.LabelFor(m => m.StoreList)
@Html.DropDownListFor(m => m.SelectedStore, new SelectList(Model.StoreList, "StoreCode", "StoreCode"), "Select Store")
<input type="submit" value="Filter" />
}
Мой контроллер:
public class MyController : Controller
{
public ActionResult Index() {
MyViewModel vm = new MyViewModel();
var storelist = new List<Store>();
storelist.Add(new Store { StoreCode = "XX" });
storelist.Add(new Store { StoreCode = "YY" });
storelist.Add(new Store { StoreCode = "ZZ" });
vm.StoreList = storelist;
return View(vm);
}
[HttpPost]
public ActionResult Index(MyViewModel model, string SelectedStore, FormCollection collection) {
if (ModelState.IsValid) {
/* this works, model state is valid */
/* BUT, the contents of model.StoreList is null */
}
return View( model);
}
}