Я изучаю MVC и использую DropDown в своем приложении MVC в новой форме регистрации пользователей.
Что касается большинства моих экранов, у меня есть два метода управления. Один для GET (начальное отображение экрана) и один для POST (когда пользователь нажимает кнопку «Отправить»).
Вот код:
public ActionResult UserRegistration()
{
SelectList list = new SelectList(SiteUserRepository.GetTimezones(), "timezone_id", "location");
ViewData["timezones"] = list;
return View();
}
[HttpPost]
public ActionResult UserRegistration(SiteUserModels.SiteUserRegistrationModel model)
{
if (ModelState.IsValid)
{
SiteUserRepository.CreateUser(model.username, model.email, model.password, model.firstname, model.firstname, model.timezone_id);
return RedirectToAction("Index", "Home");
}
SelectList list = new SelectList(SiteUserRepository.GetTimezones(), "timezone_id", "location");
ViewData["timezones"] = list;
return View();
}
Обратите внимание, что я копирую и публикую код. Код для раскрывающегося списка (список выбора) копируется. Я обнаружил, что ViewData доступен только для первоначального запроса, поэтому мне нужно было повторить его для публикации (если пользователь ввел неверные данные, экран возвращается ..)
Есть ли лучший способ сделать это?