Это кажется плохим. Как это должно быть сделано? Asp.Net MVC и Dropdown - PullRequest
0 голосов
/ 04 января 2011

Я изучаю 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 доступен только для первоначального запроса, поэтому мне нужно было повторить его для публикации (если пользователь ввел неверные данные, экран возвращается ..)

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

1 Ответ

2 голосов
/ 04 января 2011

В вашем случае должно быть нормально возвращать 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();
}

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

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