Asp.net mvc 5 如何添加2个用户类型以在asp.net mvc 5 identity上注册

Asp.net mvc 5 如何添加2个用户类型以在asp.net mvc 5 identity上注册,asp.net-mvc-5,entity-framework-6,Asp.net Mvc 5,Entity Framework 6,我知道如何添加名字、姓氏和电子邮件属性来注册我的开源预订系统,但我想要两种用户类型。默认用户类型应为clients,第二种类型应为hostler。这些选项可以通过下拉或单选按钮显示。我想知道有两张登记表可以吗?会不会产生冲突??或者为两份类似的工作编写两份表格只是浪费时间? 用户类型是否应另存为用户角色,还是应作为用户类型执行,并仅对第三种用户类型使用角色(网站唯一管理员或内部注册的所有者) 我对默认asp.net标识的ApplicationUser类的修改 public class Regis

我知道如何添加名字、姓氏和电子邮件属性来注册我的开源预订系统,但我想要两种用户类型。默认用户类型应为clients,第二种类型应为hostler。这些选项可以通过下拉或单选按钮显示。我想知道有两张登记表可以吗?会不会产生冲突??或者为两份类似的工作编写两份表格只是浪费时间? 用户类型是否应另存为用户角色,还是应作为用户类型执行,并仅对第三种用户类型使用角色(网站唯一管理员或内部注册的所有者)

我对默认asp.net标识的ApplicationUser类的修改

public class RegisterViewModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { 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; }

        // for first name
        [Required]
        [Display(Name = "First name")]
        public string FirstName { get; set; }
        //for last name
        [Required]
        [Display(Name = "Last name")]
        public string LastName { get; set; }
        //for email
        [Required]
        [StringLength(60, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 5)]
        [Display(Name = "Email")]
        public string Email { get; set; }

        // Return a pre-poulated instance of AppliationUser:
        public ApplicationUser GetUser()
        {
            var user = new ApplicationUser()
            {
                UserName = this.UserName,
                FirstName = this.FirstName,
                LastName = this.LastName,
                Email = this.Email

            };
            return user;
        }
    }
公共类应用程序用户:IdentityUser { [必需] 公共字符串名{get;set;}

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

    [Required]
    public string Email { get; set; }
}
这里是register.cshtml(仅显示我添加的内容)

AccountController.cs

// POST: /Account/Register
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser() { 
                    UserName = model.UserName,
                    FirstName = model.FirstName,
                    LastName = model.LastName,
                    Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
//POST:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
var user=new ApplicationUser(){
用户名=model.UserName,
FirstName=model.FirstName,
LastName=model.LastName,
Email=model.Email
};
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
等待信号同步(用户,ispersist:false);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
加法器(结果);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
提前谢谢你

我个人会用“角色”来定义每个人的访问权限。这就是角色的用途

想想看……如果你的一个酒店经营者也想以用户身份预订房间怎么办


所以角色可能是“可以预订房间”,“可以列出酒店”,等等。但最终你必须弄清楚如何最好地管理它。很可能你会通过你的管理员帐户控制哪些用户是酒店经营者,对吗?

请在每篇文章中问一个问题。我不知道在这里回答什么,因为你混淆了问题和困惑。@GertArnold。好的,我应该如何用3种不同的方式对注册页面进行编码用户类型。1.预订房间的客户2.发布酒店房间的酒店经营者3.网站管理员/所有者在UI中显示选项(按视图模型),并在控制器/服务逻辑中创建正确的类型。
// POST: /Account/Register
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser() { 
                    UserName = model.UserName,
                    FirstName = model.FirstName,
                    LastName = model.LastName,
                    Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }