2012-01-17 55 views
2

我有一個MVC3網站,我正在編寫註冊用戶的代碼。代碼做到這一點:如何爲新用戶設置配置文件數據

MembershipCreateStatus createStatus; 
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

它做的下一件事是這樣的:

HttpContext.Profile["FirstNAme"] = model.FirstName; 
HttpContext.Profile["LastName"] = model.LastName; 

這是它失敗。我得到的錯誤是:

無法爲匿名用戶設置此屬性。

我明白爲什麼;這是因爲沒有用戶登錄或沒有指定用戶,所以我當然不能爲用戶設置配置文件。我正在從Pro ASP.NET MVC 3框架的第754頁開始工作,這是我從中獲得此代碼的地方。我已經在web.config文件中設置了它。

<profile enabled="true" defaultProvider="AspNetSqlProfileProvider"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
    </providers> 
    <properties> 
    <add name="FirstName" type="String"/> 
    <add name="LastName" type="String"/> 
    </properties> 
</profile> 

我的問題是如何設置我想要註冊的用戶的名字和姓氏?

回答

5

嘗試通過獲取配置文件用戶的用戶名:

ProfileBase profile = ProfileBase.Create(model.UserName); 

是,創建「獲取」你剛剛創建的用戶配置文件,而不是創建它(誤導!)。然後你可以使用:

profile["FirstName"] = model.FirstName; 
profile["LastName"] = model.LastName; 

不要忘記設置值之後調用profile.Save();

相關問題