区别于“新建Web站点”,在“Web 项目工程”里并不能直接使用Profile。
相对于普通的“新建Web站点”,我们只需要配置好了,就可以直接在页面的后台文件里引用Profile了,如下:
if (Profile.ShoppingCart != null)
{
repCart.DataSource = Profile.ShoppingCart.CartItems;
repCart.DataBind();
}
如果在“Web项目工程”里也这样引用,则会出错:不存在此空间名。
这一点在微软的MSDN里也有说明:Visual Studio 2008 Web 应用程序项目不会自动包含 ProfileCommon 类。但是,您可以创建自己的 ProfileCommon 类,并在其中包含配置文件系统中已配置项的强类型属性。随后,您可以访问 HttpContext 对象的当前 Profile 属性,以获取并设置这些强类型属性。下面的示例演示如何创建包含在 Class1.cs(对于 Visual Basic 则为 Class1.vb)文件中的自定义 ProfileCommon 类。
下面我们一步步来说明一下如何在项目里引用吧:
第一步:配置Web.Config文件
<profile defaultProvider="AspNetSqlProfileProvider">
<properties>
<add name="Teachers"
type="Teachers"
allowAnonymous="true" />
</properties>
</profile>
第二步:建立自己的Profile类:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Profile;
namespace WebApplication1
{
public class ProfileCommon
{
public Teachers Teachers
{
get
{
return (Teachers) HttpContext.Current.Profile.GetPropertyValue("Teachers");
}
set
{
HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
}
}
}
}
接下来,就可以向必须使用配置文件系统的页中添加名为 Profile 的 ProfileCommon 类的一个实例,如下面的示例所示:
public partial class _Default : System.Web.UI.Page
{
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;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}