Silverlight 您希望查询字符串参数名称区分大小写吗?

Silverlight 您希望查询字符串参数名称区分大小写吗?,silverlight,query-string,Silverlight,Query String,Silverlight对查询字符串参数区分大小写,因此以下代码将返回false,并带有“callid=5” 微软引用了www.w3.org规范为这一决定辩护,但我认为这会给试图链接到您或通过电话提供URL的人带来不那么友好的体验 看起来Stackoverflow不区分大小写: 是的,我习惯于区分大小写,因此很长一段时间以来一直在为它编程。我知道有些人已经实现了一些方法来进行中间解析,将它们全部转换为小写或其他服务器端的内容,这实际上取决于您具体使用的内容 至于可用性,是的,它更难阅读。但是,同时

Silverlight对查询字符串参数区分大小写,因此以下代码将返回false,并带有“callid=5”

微软引用了www.w3.org规范为这一决定辩护,但我认为这会给试图链接到您或通过电话提供URL的人带来不那么友好的体验

看起来Stackoverflow不区分大小写:
是的,我习惯于区分大小写,因此很长一段时间以来一直在为它编程。我知道有些人已经实现了一些方法来进行中间解析,将它们全部转换为小写或其他服务器端的内容,这实际上取决于您具体使用的内容


至于可用性,是的,它更难阅读。但是,同时,电话上带有查询字符串的URL无论如何也不容易给出。

我认为您应该关注您的命名约定,而不是标准的实现,确保避免类似的字段名和大小写混合。例如,您可以使用一种通过电话读出的词语约定,表示“全小写”或“全大写”。

此解决方案不会使用字典的功能,因为它将遍历所有键,但对于大多数情况,它可能是一种足够的解决方案

var keyName = HtmlPage.Document.QueryString.Keys.SingleOrDefault(key => key.Equals("callid", StringComparison.OrdinalIgnoreCase));

string callid;
HtmlPage.Document.QueryString.TryGetValue(keyName, out callid) 
如果有许多字典查找,还可以使用不区分大小写的比较器将整个QueryString字典转换为新字典

var insensitiveQueryString = HtmlPage.Document.QueryString.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.OrdinalIgnoreCase);

是我干的。我不知道这是否有用

var keyName = "";
if (!string.IsNullOrEmpty(keyName = someDictionary.SomeKeys.FirstOrDefault(k => k.ToLowerInvariant() == "size")))
{
    var someValue = someDictionary[keyName];
}
var keyName = "";
if (!string.IsNullOrEmpty(keyName = someDictionary.SomeKeys.FirstOrDefault(k => k.ToLowerInvariant() == "size")))
{
    var someValue = someDictionary[keyName];
}