对于我的ASP.NET MVC 3应用程序(使用Razor),我的web.config
有:
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
<properties>
<add name="FirstName"/>
<add name="LastName"/>
</properties>
</profile>
通过阅读文档,我理解ASP.NET将自动生成HttpContext的属性,以便我可以像这样访问它们:
// MyController.cs
Email = u.Email;
FirstName = HttpContext.Profile.FirstName;
LasttName = HttpContext.Profile.LastName;
然而,编译器惹人注意,.FirstName
和.LastName
不存在。
这里发生了什么?
答案 0 :(得分:1)
尝试这种方法:
UserProfile
),扩展ProfileBase
Email
等(不要忘记{get;set;}
)(UserProfile)HttpContext.Current.Profile
您的Web.config:
<profile defaultProvider="AspNetSqlProfileProvider" inherits="Namespace.To.Your.UserProfile">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" connectionStringName="ConnectionStringName" type="System.Web.Profile.SqlProfileProvider" applicationName="App" />
</providers>
</profile>
您的个人资料类:
public class UserProfile : ProfileBase
{
public string Email
{
get { return (string)GetPropertyValue("Email"); }
set { SetPropertyValue("Email", value); }
}
}
答案 1 :(得分:0)
使用ASP.NET Web窗体时,通过代理对象访问配置文件数据,该对象的属性对应于配置文件属性。此功能不适用于MVC Framework应用程序 你可以像这样获得用户配置文件属性值:
public ActionResult Index()
{
ViewBag.Name = HttpContext.Profile["Name"];
ViewBag.City = HttpContext.Profile.GetProfileGroup("Address")["City"];
return View();
}
它将返回当前登录的用户配置文件属性值。