Frage

Silverlight ist Groß- und Kleinschreibung für Query-String-Parameter, so dass der folgende Code falsch zurückkommen würde mit "CallID = 5"

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

Microsoft verteidigt die Entscheidung durch die www.w3.org spec zitiert, aber ich denke, es führt zu einer weniger freundlichen Erfahrung für Menschen, die versuchen einen Link zu Ihnen, oder einer URL über das Telefon geben.

Sieht aus wie Stackoverflow ist Groß- und Kleinschreibung: https://stackoverflow.com/search?q=silverlight+bug https://stackoverflow.com/search?Q=silverlight+bug

War es hilfreich?

Lösung

Ich glaube, Sie auf Ihrer Namenskonvention konzentrieren sollen, anstatt die Implementierungen von Standards, um sicherzustellen, Ähnliche Feldnamen und Groß- und Kleinschreibung zu vermeiden. Zum Beispiel können Sie eine Konvention der Wörter, die über das Telefon ausgelesen werden kann „alle Kleinbuchstaben“ oder „alle Großbuchstaben“ besagt.

Andere Tipps

Ich tat dies. Sie wissen nicht, ob es hilft.

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

Ja, ich bin es gewohnt, um es Groß- und Kleinschreibung zu sein, und daher für eine lange Zeit, um es der Programmierung wurde. Ich kenne einige Leute, die Methoden implementiert haben Zwischen-Analyse zu tun, um sie alle in Kleinbuchstaben zu konvertieren, oder andere Dinge Server-Seite, und es hängt wirklich davon ab, was Sie mit speziell arbeiten.

Wie für die Benutzerfreundlichkeit, ja, es ist schwieriger zu lesen. Aber zur gleichen Zeit eine URL über das Telefon, das eine Abfragezeichenfolgeflag hat, ist nicht einfach irgendwie zu geben.

Diese Problemumgehung wird nicht die Macht des Wörterbücher verwenden, weil es durch alle Tasten durchlaufen werden, aber es ist wahrscheinlich eine ausreichende Abhilfe für die meisten Szenarien sein.

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

string callid;
HtmlPage.Document.QueryString.TryGetValue(keyName, out callid) 

Sie können auch die gesamte Abfrage-Zeichenfolge-Wörterbuch auf ein neues Wörterbuch mit Groß- und Kleinschreibung Vergleich verwandeln, wenn Sie viele Wörterbuch Lookups haben.

var insensitiveQueryString = HtmlPage.Document.QueryString.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.OrdinalIgnoreCase);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top