2009-09-15 91 views
1

MSDN documentation在这一点上并不精确。应该FindUsersByName包含部分匹配吗?

它在一个地方说:“获取会员用户的集合,其中用户名包含与指定的用户名匹配。”

后来它说:“FindUsersByName返回一个成员用户列表,其中用户名匹配为配置的applicationName提供的usernameToMatch。”

SQLMembershipProvider支持通配符,但文档不会说我是否也必须使用自定义成员资格提供程序来完成此操作。

编辑:我真的在问更多关于会员供应商的意图,而不是我在特定情况下应该做什么。

回答

3

的FindUsersByName功能会做你把这个字符串匹配英寸

如果你想要它做的部分比赛,那么你需要添加“%”你要搜索的字符串的结尾。

0

让我们把它更加严格(找到精确匹配),以确保用户“乔”的用户“乔” :)

的数据没有进入无论如何,你真的需要找到给用户只有部分名字?

编辑: 现在再次检查你链接到MSDN方法,它的名字是FindUsersByName(用户,而不是用户),所以该方法能够比一个用户返回更多。这种情况下,我假设你应该实现代码来返回所有匹配。 如果该方法是FindUserByName,则是相反的答案(你有方法的getUser本)

+1

在管理网站,这是一个共同的需要。 – David 2009-09-15 22:04:54

+0

由于一个管理员我仍然不相信,管理任务在这个问题上不是很频繁,可以应用不同的方法。 真正的答案应该是:取决于你的需要:) – twk 2009-09-15 22:10:28

3

这句话在文件中解释的那样:

The SqlMembershipProvider performs its search using a LIKE clause against the usernameToMatch parameter. Any wildcards that are supported by SQL Server in LIKE clauses can be used in the usernameToMatch parameter value. 

SO

“获取会员用户的集合,其中用户名包含指定的用户名以匹配。”

是正确的句子,如果你做一个搜索“DAV *”你应该得到“戴夫”,“大卫,‘戴维斯’等

+0

我明白这是如何SqlMembershipProvider做到这一点,但这是否意味着所有其他实现应该支持这个?此外,我是否希望支持LIKE通配符? – Larsenal 2009-09-15 22:09:30