我正在MVC4中创建一个站点,这是我第一次在.NET中使用MVC,我已经了解了登录和注册。我有这样的场景:
该网站有角色"A"和角色"B",当用户之前还没有注册时,我想将他们引导到注册页面,当他们点击特定部分的注册部分时,我将引导他们进入注册页面。但是,我希望注册页面根据他们单击的注册按钮自动定义他们的角色。
因此,用户在注册时单击按钮"a",将被分配角色"a";当代理"B"注册时,将自动分配角色"B"。我希望避免使用变量来阻止人们覆盖选择。
有很多方法可以实现它。例如:
在AccountModels.cs
中将bool IsAgentA
添加到您的RegisterModel class
public class RegisterModel
{
[Required]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }
public bool IsAgentA {get; set;}
}
在Registration View
中为IsAgentA
添加单选按钮(是-代理A,否-代理b)。我不会在这里写的。
然后在AccountController
中修改您的Register ActionResult
如下:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
if (model.IsAgentA)
{
Roles.AddUserToRole(model.UserName, "Role A"); // user in role A
}
else
{
Roles.AddUserToRole(model.UserName, "Role B"); // user in role B
}
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
return View(model);
}