我正在 MVC4 中创建一个站点,这是我第一次在 .NET 中使用 MVC,我已经完成了登录和注册。我有这种情况:
该网站有角色'A'和角色'B',当用户在我想引导他们到注册页面之前没有注册时,当他们点击他们特定部分的注册部分时,我将他们引导到注册页面. 但是,我希望注册页面根据他们单击的注册按钮自动定义他们的角色。
因此,用户在注册时单击按钮“A”,他们将被分配角色“A”,而当代理“B”注册时,他们将被自动分配角色“B”。我想避免使用变量来阻止人们覆盖选择。
我正在 MVC4 中创建一个站点,这是我第一次在 .NET 中使用 MVC,我已经完成了登录和注册。我有这种情况:
该网站有角色'A'和角色'B',当用户在我想引导他们到注册页面之前没有注册时,当他们点击他们特定部分的注册部分时,我将他们引导到注册页面. 但是,我希望注册页面根据他们单击的注册按钮自动定义他们的角色。
因此,用户在注册时单击按钮“A”,他们将被分配角色“A”,而当代理“B”注册时,他们将被自动分配角色“B”。我想避免使用变量来阻止人们覆盖选择。
有很多方法可以实现它。例如:
添加bool IsAgentA
到您RegisterModel class
的AccountModels.cs
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;}
}
IsAgentA
在您的Registration View
(是 - 代理 A,否 - 代理 b)中添加单选按钮。我不会在这里写。
然后修改你Register ActionResult
的AccountController
如下:
[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);
}