Лучший способ поддержки нескольких форм в MVC3 с аннотацией проверки - PullRequest
2 голосов
/ 13 марта 2012

В проекте mvc3 я хочу иметь 2 формы на одной странице.Одна форма предназначена для регистрации пользователя, а другая - для входа.

Есть две кнопки отправки.Один для регистрации, другой для входа.

В модели есть аннотирование проверки, например, требуется имя пользователя, пароли должны совпадать и т. Д.

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

Я пытался написать частичные представления или сделать все в одном представлении и написать несколько пользовательских комментариев, относящихся к нажатой кнопке.

Но, похоже, все неправильно.Это не может быть лучшим решением.

Что было бы лучшим способом для достижения этой цели.

1 Ответ

4 голосов
/ 13 марта 2012

как я подхожу к этой проблеме; где вам нужно 2 или более привязки ViewModels к вашему представлению, это создать охватывающую ViewModel с 2 свойствами, а затем назначить отдельные модели login и register каждому свойству. например (минус любая проверка, которую вы хотите добавить)

public class LogOnViewModel {
    public string UserName { get; set; }
    public string Password { get; set; }
}

public class RegisterViewModel {
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string ConfirmPassword { get; set; }
}

public class WelcomeScreenViewModel {
    public LogOnViewModel LogOnModel { get; set; }
    public RegisterViewModel RegisterModel { get; set; }
}

В моем представлении Welcome вверху я бы имел @model namespace.WelcomeScreenViewModel вместе с двумя частичными представлениями, указывающими на _LogOn и _Register следующим образом:

@Html.Partial("_LogOn", Model.LogOnModel)
@Html.Partial("_Register", Model.RegisterModel)

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

...