在ASP.NET2.0中,网站可以存储用户特定的信息,但是默认的用户档案系统并不提供一种方式让网站能够搜索这些档案以找到符合特定档案条件的用户。幸运的是,ASP.NET 2.0的用户档案特性是建立在所谓的“提供者模型”之上的,它允许定制用户档案系统的内部工作方式以适应自定义网站的需求。本文将探讨如何利用这一模型。
本文基于Shawn Wildermuth(也被称为"ADOGuy")的代码,标题为“创建自定义ASP.NET2.0用户档案提供者”。在那里,他解释了用户档案特性是什么,如何使用它,什么是“用户档案提供者”,以及它对Web开发者的用处。此外,他还在文章中提供了一个自定义用户档案提供者的例子,这个例子非常有创意。只是在他的工作基础上进行了改进,进一步定制了这个提供者,进行了更多的测试,并修复了一些bug。这是他文章的链接:
不会重复他所解释的所有内容。将只解释如何使用自定义用户档案提供者。此外,提供者的代码有大量的注释,欢迎大家查看,并且欢迎提出任何问题。
使用代码非常简单;只需要将名为"SearchableSqlProfileProvider.cs"的文件放入项目的"App_Code"文件夹中。同时,需要修改"web.config"文件,告诉系统将使用自定义用户档案提供者,并定义用户档案属性,如下所示:
<profile enabled="true" defaultProvider="mySearchableSqlProfileProvider">
<providers>
<clear/>
<add name="mySearchableSqlProfileProvider" type="SearchableSqlProfileProvider" connectionStringName="myDbConnection" />
</providers>
<properties>
<add name="Title" type="System.Int32" defaultValue="0" />
<add name="Name" type="System.String" defaultValue="" />
<add name="Gender" type="System.Int32" defaultValue="0" allowAnonymous="true" />
</properties>
</profile>
在这段"web.config"文件中,定义了将使用名为"mySearchableSqlProfileProvider"的用户提供者,类型为"SearchableSqlProfileProvider",数据库在"web.config"文件的"
这里缺少的是用户提供者将工作的数据库!可以在"SearchableSqlProfileProvider.zip"文件中找到一个脚本,可以使用它来构建一个名为"users"的数据库,并通过在"web.config"文件的"
完成这些步骤后,现在可以使用用户提供者,就像使用默认的一样,就是这么简单!
要使用用户提供者的搜索方法,只需按照以下步骤操作:
C# ProfileInfoCollection pic = new ProfileInfoCollection();
pic = ((SearchableSqlProfileProvider)ProfileCommon.Properties["PropertyName"].Provider).FindProfilesByPropertyValue(
ProfileCommon.Properties["PropertyName"],
SearchableSqlProfileProvider.SearchOperator.Equal,
"Search Criteria"
);
这里实例化一个ProfileInfoCollection来接收搜索方法"FindProfilesByPropertyValue"的返回值,它接受三个参数:第一个是搜索的用户提供属性,第二个是搜索操作符,稍后将讨论,最后一个参数是搜索条件。
public enum SearchOperator
{
Equal = 0,
NotEqual = 1,
Like = 2,
NotLike = 3,
LessThan = 4,
LessThanOrEqual = 5,
GreaterThan = 6,
GreaterThanOrEqual = 7,
Contains = 8,
FreeText = 9
}