ImportCatalog用来显示导入的webpart列表。我们可以导入扩展名为.WebPart的文件。如果要导出类型为.WebPart的文件你需要在web.config增加如下元素
设置控件的属性ExportMode的值为All。如果你的控件继承自WebPart就可以这么做,代码如下
gwp.ExportMode = WebPartExportMode.All;
Connect mode允许各个webpart之间可以互相通信。用户可以依照他们的需要在运行时创建他们的连接。这个连接并不是让webpart连接到数据库,而是webpart之间的互相连接。例如,如果有一个webpart里包含一个grid,它要根据用户的输入显示相应的记录,而用户使用的TextBox在另一个webpart里,此时就要使用Connect mode发送数据。
在我们的例子里,我们将在一个页里放置两个webpart。一个负责用户输入,另一个负责显示。在你的web站点里新建两个用户控件,分别命名为“Provider”和“Consumer”,并把它们放到相应的webpart里。在App_Code文件夹里新建一个名为“ITextProvicer”的类。代码如下:
{
string GetText();
}
在Provider用户控件里放置一个TextBox,并输入如下后置代码
{
[ConnectionProvider("TextToPass", "TextProvider")]
public ITextToPass GetTextTransferInterface()
{
return ((ITextToPass)(this));
}
public string GetText()
{
return TextBox1.Text;
}
}
下一步在Consumer用户控件里放置一个Label,并在.cs文件里添加如下代码
public void GetTextTransferInterface(ITextToPass provider)
{
Label1.Text = provider.GetText();
}
保存页面状态
在运行我们的项目之前,有一个问题就是如何保存不同用户的不同页面状态呢?为了保存用户对页的修改,我们就需要把这些设置保存到数据库里。在我的例子中使用到了注册和登录控件。
首先你要在你的web.config设置验证模式为“Forms”。然后在你的项目中新建一个webform并取名为Login.aspx。拖拽一个Login控件到页上,设置它的DestinationPageUrl属性为Default.aspx。在你的项目中再新建另一个webform,取名为Signup.aspx,拖拽一个CreateUserWizard控件在此页上。如此用户就可以注册和登录了。另外你还要确保SqlExpress服务正在运行中。我们使用asp.net自动在App_Data文件夹内创建的ASPNETDB.mdf为默认数据库。这个数据库已经提供了保存不同用户的不用页设置的相关表和存储过程。其在Visual Studio环境中的截图出示如下
创建数据库
为了创建一个数据库来保存我们的页设置状态,需要运行“aspnet_regsql.exe”工具。这个工具在本地的\Windows\Framework\v2.0.50727文件夹里。它可以帮助我们创建所需的表和存储过程。该工具向导的截屏如下
<clear/>
<add name="LocalSqlServer"
connectionString="data source=127.0.0.1;database=Database1;
user id=sa ;password=sa"/>
</connectionStrings>
<system.web>
<compilation debug="true"/>
<authentication mode="Forms" />
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web,
Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
applicationName="/CustomConnections" />
</providers>
</membership>
<profile enabled="true" defaultProvider="TableProfileProvider">
<providers>
<clear/>
<add name="TableProfileProvider"
type="Microsoft.Samples.SqlTableProfileProvider"
connectionStringName="LocalSqlServer"
table="asdspnet_Profile"
applicationName="/CustomConnections"/>
</providers>
</profile>
</system.web>
webparts为我们提供了一个在运行时自定义web站点的简单方法。它是从SharePoint中提取出来,并引进到asp.net 2.0中的。我们已经在本文中测试了它的一些基本用法,如使用不同类型的webpart和使用自定义数据库等等。