Использование нескольких моделей в одном представлении-ASP.NET MVC
Мне нужно сделать логин ,зарегистрировать страницу в системе ASP.NET MVC в пределах одного представления. Но приложение должно иметь 2 отдельных класса модели для входа в систему и регистрации действий, пожалуйста, проверьте ниже код.
Смотреть
@using PAMWebApp.Models; @model Tuple<LoginViewModel,RegisterViewModel> @using (Html.BeginForm("Login", "Home", FormMethod.Post, new { id = "login-form", role = "form", style = "display: block;", })) { <div class="form-group"> @Html.TextBoxFor(m => m.Item1.UserName, new { @class = "form-control", id = "username", name = "username", type = "text", placeholder = "Username", tabIndex = 1 }) </div> <div class="form-group"> @Html.TextBoxFor(m => m.Item1.Password, new { @class = "form-control", type = "password", id = "password", name = "pass", placeholder = "Password", tabindex = 2 }) </div> <div class="form-group"> <div class="row"> <div class="col-sm-6 col-sm-offset-3"> <input type="submit" name="login-submit" id="login-submit" tabindex="4" class="form-control btn btn-login" value="Log In"> </div> </div> </div> }
Контроллер
[HttpPost] [AllowAnonymous] public ActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { string name = model.UserName; string pwd = model.Password; } }
Модель
public class LoginViewModel { [Required] [Display(Name = "User Name")] public string UserName { get; set; } [Required] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } } public class RegisterViewModel { [Required] [Display(Name = "User Name")] public string UserName { get; set; } [Required] [Display(Name = "Email")] public string Email { get; set; } [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "Confirm password")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; } }
Что я уже пробовал:
It doesn't pass the values from view to controller. So please any one correct me, .It's working fine, if it is use one model
F-ES Sitecore
Ваше действие контроллера вообще не возвращает представление. Несмотря на это, google "multiple models mvc", и вы найдете множество предложений о том, как решить эту проблему, это часто задаваемый вопрос. Обычно вы создаете новый класс модели представления, который имеет ваши другие модели в качестве свойств.