在一个视图中使用多个模型-ASP.NET MVC [英] Using multiple models in one view -ASP.NET MVC

查看:55
本文介绍了在一个视图中使用多个模型-ASP.NET MVC的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在一个视图中进行登录,在ASP.NET MVC中注册页面。但是应用程序需要有2个独立的模型类用于登录和注册操作,请查看下面的代码。



查看

I need to do a login ,register page in ASP.NET MVC within one view. But application need to have 2 separate model class for login and register actions please check below code.

View

@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>
 }



控制器


Controller

[HttpPost]
    [AllowAnonymous]
    public ActionResult Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            string name = model.UserName;
            string pwd = model.Password;
        }
     }





型号



Model

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; }
    }





我尝试过:





What I have tried:

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

推荐答案

你可以包装你的单一模型中的LoginViewModel RegisterViewModel 模型。这意味着您将创建一个包含现有模型的新类,以便您可以在 View 中引用新类。例如:



You can wrap your LoginViewModel and RegisterViewModel models in single model. This means that you will create a new class that holds your existing models so you could reference the new class in your View instead. For example:

public class MemberModel{
    public LoginViewModel LoginModel { get; set; }
    public RegisterViewModel RegisterModel { get; set; }
    //add more properties here if necessary
}





然后你可以在你的视图中参考这样的新模型:





You can then reference the new model like this in your View:

@model PAMWebApp.Models.MemberModel 


这篇关于在一个视图中使用多个模型-ASP.NET MVC的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆