2011-12-03 34 views
0

由於我選擇通過創建一個新表來記錄額外的用戶信息來擴展成員資格提供程序,所以在註冊時我需要使用成員資格表中的uniqueUserId填充這個新表。請原諒我的無知我是一個新手。如何修改這個代碼添加唯一鍵說了一個名爲UsrProfileMVC3修改MembershipCreateuser

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 */); 

        //add unique user id to myprofile 

        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
       } 
      } 
+0

這完全取決於你所使用的數據庫技術。既然你沒有提到它,我們所要做的就是猜測你正在使用哪種技術。 –

回答

0
從默認的成員資格提供

唯一鍵可以通過檢索:

Membership.GetUser().ProviderUserKey 

讓您可以輕鬆創建用戶之間的關係和你的其他桌子。 但是,如果你想存儲用戶的其他屬性,爲什麼不利用已經存在的像Profiles這樣的東西?你只需要添加下面的結構web.config中關於個人資料的

<profile> 
    <providers> 
    <clear /> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    </providers> 
    <properties> 
    <add name="EverLoggedOn" defaultValue="False" type="System.Boolean" /> 
    </properties> 
</profile> 

更多信息:http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

+0

感謝在我最初的研究中,我碰到了很多批評聲稱默認profileprovider不可擴展,因此我決定避免它 – Diin

+0

通常我會有不同類型的用戶,他們都必須提供一些基本個人資料信息,如Fname,Mname,Lname,DOB,公民身份,居住地,移動,電話,職業,MembtypeID和其他基於membertypID的信息我在第一次登錄時打算如何填寫myprofile表,或她在網站上首次發佈的人將被重定向完成額外的個人資料數據。然而,如果你認爲我不會在將來遇到管理瓶頸,我準備默認使用profileprovider – Diin

+0

謝謝@torm我終於用這個解決方案來實現我想要的 – Diin