我在教自己Asp.net MVC 3.我已經到了需要現在整合用戶帳戶系統的階段。我從標準的Asp .net MVC 3會員提供商開始,並且希望大部分都堅持使用它,並將所有其他用戶詳細信息存儲在鏈接到用戶表的其他表中。Asp .net MVC3用戶註冊
不過,我想在註冊時增加兩個功能: 1)確認電子郵件 2)接受牛逼& C.
是否有一個簡單的方法來做到這一點沒有建立一個自定義成員資格提供?
我在教自己Asp.net MVC 3.我已經到了需要現在整合用戶帳戶系統的階段。我從標準的Asp .net MVC 3會員提供商開始,並且希望大部分都堅持使用它,並將所有其他用戶詳細信息存儲在鏈接到用戶表的其他表中。Asp .net MVC3用戶註冊
不過,我想在註冊時增加兩個功能: 1)確認電子郵件 2)接受牛逼& C.
是否有一個簡單的方法來做到這一點沒有建立一個自定義成員資格提供?
個人而言,我不認爲確認電子郵件/條款和條件應成爲會員提供商的一部分。
您通常會在您的AccountController(或您擁有的任何等價物)中處理類似的事情。
舉例來說,如果你有一個註冊的動作,一旦你使用的成員資格提供保存用戶,一切看起來不錯,你會再發送確認郵件(代碼從行動被觸發)
您可以添加接受(在型號目錄AccountModels.cs)賬戶示範條款和條件的RegisterModel類,像這樣:
[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }
你必須更新註冊視圖,添加了對這個顯示器這樣就會顯示一個複選框,並且可以顯示任何你想要的文字。
不幸的是,你不能簡單地使用[Required]
屬性,因爲這是一個bool
,而不是被檢查爲假不爲空。有許多方法可以創建一個自定義布爾必需屬性,但它們有點工作。它可能會更容易讓你在賬戶控制器註冊方法添加的檢查,看它是否被選中,是這樣的:
if(model.AgreeTandC == false)
{
ModelState.AddModelError("AgreeTandC", "You must agree to the Terms and Conditions");
return View(model);
}
我沒用過ModelState.AddModelError
像前,但我認爲它將工作(向用戶顯示錯誤),否則用ViewBag.Error = "You must agree to the Terms and Conditions";
替換它並將其添加到註冊視圖模型。
至於電子郵件,這並不難,你必須添加發送電子郵件的能力,如MvcMailer將有助於這一點。您還需要更改帳戶控制器的註冊方法中的Membership.CreateUser
行,以不授權該用戶。
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, false, null, out createStatus);
我認爲這是應該的。這時如果createStatus == MembershipCreateStatus.Success)
發送電子郵件確認GUID string confirmationGuid = user.ProviderUserKey.ToString();
你也將不得不作出接受確認ID的方法(當他們點擊了電子郵件中的鏈接。)
我只是簡要地談到了電子郵件部分,網上有很多博客發送完整詳細的註冊電子郵件。