2011-01-04 3 views
0

Я изучаю MVC и используя DropDown в своем приложении MVC в своей новой форме регистрации пользователя.Это кажется плохим. Как это сделать? Asp.Net MVC и Dropdown

Что касается большинства моих экранов, у меня есть два метода управления. Один для 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(); 
    } 

Обратите внимание, что я копирую и размещение кода. Код для выпадающего списка (SelectList) копируется. Я узнал, что ViewData доступен только для первоначального запроса, поэтому мне нужно было переделать его для публикации (если пользователь ввел неверные данные, экран возвращается ..)

Есть ли лучший способ сделать это ?

ответ

2

В вашем случае должно быть нормально возвращать ActionResult действия, отличного от поста.

[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"); 
    } 
    return UserRegistration(); 
} 

Как правило, вы хотите предоставить отчет об ошибках в представлении, но с дополнительными данными. В этом случае вы должны реорганизовать создание SelectList в отдельный метод, чтобы избежать избыточности.

+0

Отлично! Спасибо что подметил это. Работает 100%. Будет добавлена ​​ошибка проверки. – Craig

Смежные вопросы