Ожидаете ли вы, что имена параметров строки запроса чувствительны к регистру? - PullRequest
4 голосов
/ 30 апреля 2009

Silverlight чувствителен к регистру для параметров строки запроса, поэтому следующий код вернет false с "callid = 5"

string callId;
if (System.Windows.Browser.HtmlPage.Document.QueryString.TryGetValue("callId", out callId))
{
....
}

Microsoft защищает это решение, ссылаясь на спецификацию www.w3.org, но я думаю, что это приведет к менее дружелюбному восприятию людей, пытающихся связаться с вами или дать URL по телефону.

Похоже, что Stackoverflow нечувствителен к регистру: https://stackoverflow.com/search?q=silverlight+bug https://stackoverflow.com/search?Q=silverlight+bug

Ответы [ 4 ]

4 голосов
/ 30 апреля 2009

Я думаю, вам следует сосредоточиться на своих соглашениях об именах, а не на реализациях стандартов, избегая подобных имен полей и смешанного регистра. Например, вы можете использовать соглашение слов, которое по телефону может быть прочитано с указанием «все строчные буквы» или «все прописные буквы».

1 голос
/ 26 мая 2014

Я сделал это. Не знаю, поможет ли это.

var keyName = "";
if (!string.IsNullOrEmpty(keyName = someDictionary.SomeKeys.FirstOrDefault(k => k.ToLowerInvariant() == "size")))
{
    var someValue = someDictionary[keyName];
}
0 голосов
/ 27 апреля 2012

Этот обходной путь не будет использовать всю мощь словарей, поскольку он будет перебирать все ключи, но, вероятно, будет достаточным обходным решением для большинства сценариев.

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);
0 голосов
/ 30 апреля 2009

Да, я привык к тому, что он чувствителен к регистру, и поэтому давно программирую на него. Я знаю некоторых людей, которые реализовали методы для промежуточного анализа, чтобы преобразовать их все в строчные или другие элементы на стороне сервера, и это действительно зависит от того, с чем конкретно вы работаете.

Что касается юзабилити, да, это труднее читать. НО, в то же время URL-адрес по телефону, содержащий строку запроса, не так просто выдать.

...