我是 ASP.NET MVC 的新手,所以如果有人能提供以下场景的指导,那就太好了。
看一个场景,其中将有两种类型的成员可以注册到站点,客户和供应商。
每种类型都是一个成员,附加信息存储在单独的模型/表(即客户模型/表、供应商模型/表)中,以及默认的成员凭据(用户名、电子邮件、密码)。不确定最好的方法。欢迎任何建议?
每种类型都有一个单独的注册页面,成功注册后,他们将被添加到各自的角色(即客户、供应商)。
这是我正在使用的客户端模型。
public class Client
{
// Will set this manually when creating a Client member
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ClientId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
目前我已经创建了一个 ViewModel 如下来处理客户端的注册
public class RegisterClient
{
// Default ASP.NET MVC RegisterModel
public RegisterModel RegisterModel { get; set; }
public Client Client { get; set; }
}
以下是 ClientController 中的 Register 方法
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(RegisterClient model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.RegisterModel.UserName, model.RegisterModel.Password, model.RegisterModel.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.RegisterModel.UserName, false /* createPersistentCookie */);
Roles.AddUserToRole(model.RegisterModel.UserName, "Client");
// Get UserId for Client <-> User relationship
int id = int.Parse(Membership.GetUser(model.RegisterModel.UserName).ProviderUserKey.ToString());
model.Client.UserProfileId = id;
db.Clients.Add(model.Client);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", createStatus.ToString());
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
这是一个合适的方法吗?我正在考虑让 Client 模型继承 MembershipUser。
然后,我如何创建客户页面列表以及他们的会员详细信息(即用户名和电子邮件)?