4

Silverlight はクエリ文字列パラメーターで大文字と小文字を区別するため、次のコードは "callid=5" で false を返します。

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 に答える 4

5

標準の実装ではなく、命名規則に焦点を当て、同様のフィールド名や大文字と小文字の混合を避けるようにする必要があると思います。たとえば、電話で「すべて小文字」または「すべて大文字」と読み上げられる単語の規則を使用できます。

于 2009-04-30T18:18:26.907 に答える
0

はい、大文字と小文字を区別することに慣れているため、長い間プログラミングを行ってきました。中間解析を実行してすべてを小文字に変換するメソッド、またはその他のサーバー側を実装している人を知っています。これは、具体的に何を操作しているかによって異なります。

使いやすさに関しては、はい、読みにくいです。しかし、同時に、クエリ文字列を含む電話のURLを提供するのは簡単ではありません。

于 2009-04-30T18:16:01.517 に答える
0

この回避策は、すべてのキーを反復処理するため、辞書の機能を使用しませんが、ほとんどのシナリオでは十分な回避策である可能性があります。

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);
于 2012-04-27T07:53:17.447 に答える