您需要在RegisterModel
如下添加這些屬性:
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
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")]
[System.Web.Mvc.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
//Put annotatons as needed
public string FirstName {get;set;}
public string LastName {get;set;}
}
在此之後,你需要把這些信息在數據庫中使用Register
方法AccountController
。
public class ExtendedUser
{
[Key]
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
所以你Register
方法,即用annoted [HttpPost]
:這可以通過從Membership
採取UserId
,並把多餘的細節在一個完全不同的表反對這種UserId
在database。這表可以如下管理更改爲以下內容以將數據存儲在上表中。
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
if (createStatus == MembershipCreateStatus.Success)
{
FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
//Get UserId for registered user
var UserId = (Guid)Membership.GetUser(model.UserName).ProviderUserKey;
ExtendedUser extrainfo = new ExtendedUser();
extrainfo.UserId = UserId;
extrainfo.FirstName= model.FirstName;
extrainfo.LastName= model.LastName;
//Add this info to database
db.ExtendedUsers.Add(extrainfo);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError("", ErrorCodeToString(createStatus));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Offcourse,你將需要添加這個新表的類繼承自DbContext
如下 類:
public class YourContext: DbContext
{
public DbSet<ExtendedUser> ExtendedUsers{ get; set; }
}
hussh ......和你做。
編輯:
微軟已經在How to: Implement a Custom Membership User這樣做以不同的方式,但他們缺少在there.But東西,你可以看看它。
您使用默認的成員資格模式嗎? – 2013-03-10 04:55:04
我敢打賭,是的。我已經找到了處理標準.Net Membership的最好方法,就是直接擴展實際的用戶表,或者用連接表/視圖來擴展實際的用戶表,並將其用於實體模型。從mvc4(技術上從WebMatrix的庫)使用 – 2013-03-10 04:59:10
simplemembershipprovider – 2013-03-10 05:13:47