Как правильно реализовать «Подтверждение пароля» в ASP.NET MVC 3? - PullRequest
30 голосов
/ 23 июля 2011

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

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

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

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

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

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

Ответы [ 2 ]

81 голосов
/ 23 июля 2011

Поскольку вся ненавязчивая проверка клиента из 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");
}
3 голосов
/ 23 июля 2011

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

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

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

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