2012-01-17 69 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();

相关问题