Подтвердить что ты не робот

Как правильно реализовать "Подтвердить пароль" в ASP.NET MVC 3?

Уже существует ответ на вопрос об одном и том же предмете, но поскольку он от '09, я считаю его устаревшим.

Как правильно реализовать "Подтвердить пароль" в ASP.NET MVC 3?

Я вижу много вариантов в Интернете, большинство из них используют CompareAttribute в модели как этот

Проблема заключается в том, что определенно ConfirmPassword не будет в модели, поскольку ее нельзя сохранять.

Как вся ненавязчивая проверка клиента из MVC 3 полагается на модель, и мне не хочется помещать свойство ConfirmPassword в мою модель, что мне делать?

Должен ли я вводить пользовательскую функцию проверки клиента? Если так.. Как?

4b9b3361

Ответ 1

Поскольку вся ненавязчивая проверка клиента из MVC 3 полагается на и мне не хочется помещать свойство ConfirmPassword на моем модель, что мне делать?

Полностью согласен с тобой. Вот почему вы должны использовать модели просмотра. Затем в вашей модели просмотра (класс, специально разработанный для требований данного представления) вы можете использовать атрибут [Compare]:

public class RegisterViewModel
{
    [Required]
    public string Username { get; set; }

    [Required]
    public string Password { get; set; }

    [Compare("Password", ErrorMessage = "Confirm password doesn't match, Type again !")]
    public string ConfirmPassword { get; set; }
}

а затем выполните действия вашего контроллера с этой моделью просмотра

[HttpPost]
public ActionResult Register(RegisterViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    // TODO: Map the view model to a domain model and pass to a repository
    // Personally I use and like AutoMapper very much (http://automapper.codeplex.com)

    return RedirectToAction("Success");
}

Ответ 2

Взгляните на шаблон VS2010 по умолчанию для приложения MVC3.

Он содержит RegisterModel ( "ViewModel" ), который содержит свойства Password и ConfirmPassword. Проверка выполняется на ConfirmPassword.

Таким образом, ответ заключается в том, что модели в MVC не обязательно должны быть (как правило, не такими), как ваши бизнес-модели.