我正在阅读一本ASP.NET书籍,如果您在启动项目时选择Web应用程序,则表明您无法使用Profile。它只能在网站上运行。
Web应用程序有其他替代方案吗?或者您是否需要构建自己的个人资料系统。
答案 0 :(得分:8)
如果您使用的是Web应用程序而不是网站,则可以使用配置文件提供程序,但是从您后面的aspx页面代码开箱即用Profile.MyProperty
将无法使用。
这不是什么大问题,因为只需要一点努力就可以做类似的事情。在Converting a Web Site Project to a Web Application Project中提供的示例是如何将配置文件提供程序与Web应用程序一起使用的一个很好的起点。
总结上述文章的转换配置文件对象代码部分,创建一个ProfileCommon
类
public class ProfileCommon
{
public Teachers Teachers
{
get
{
return (Teachers)
HttpContext.Current.Profile.GetPropertyValue("Teachers");
}
set
{
HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
}
}
}
然后在您的aspx代码后面,您现在可以
ProfileCommon Profile = new ProfileCommon();
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("scott"));
teachers.Add(new Teacher("bob"));
teachers.Add(new Teacher("paul"));
Profile.Teachers = teachers;
}
将ProfileCommon
实例化为每个页面的字段的替代方法是使其及其方法保持静态,只需从后面的代码Profile.Teachers
中调用类属性
public static class Profile
{
public static Teachers Teachers
{
//......
}
}
这不是一个巨大的优势,但使您的代码更类似于ASP.NET Web站点项目。
编辑评论与答案无关
两种项目类型之间存在关键差异,但对于我的项目,我更喜欢Web应用程序。我有一个偏见,因为为Web应用程序项目创建TFS构建管理器的构建配置文件比对Web站点项目更容易。此外,似乎微软强调网站项目,然后退出它们,转而支持Web应用程序项目。