Ich arbeitete an HtmlHelper.AnonymousObjectToHtmlAttributes
.Wie analysiert man korrekt Dictionary <string, object> in
Es funktioniert gut mit anonymen Objekt:
var test = new {@class = "aaa", placeholder = "bbb"};
var parseTest= HtmlHelper.AnonymousObjectToHtmlAttributes(test);
Das Ergebnis parseTest
hat zwei Schlüssel-Wert-Paare.
Aber für Dictionary
Objekt:
var attrsInDict = new Dictionary<string,object>() {
{"class", "form-control"},
{"placeholder", "Select one..."}
};
var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(attrsInDict);
Die attrs
ein seltsames Objekt erhalten wird, mit 4 Tasten und 4 Werte. Die 4 Tasten sind Comparer, Count, Schlüssel, Werte.
Einige andere SO Post fragen über den Unterschied zwischen den beiden (here). Die gewählte Antwort sagt
Es ist nicht allzu viel Unterschied ...
Wirklich? Und was ist der richtige Weg, die attrsInDict
zu parsen und das gleiche Ergebnis zu erhalten, wie wir es von einem anonymen Objekt bekommen?
Für will ich attribues im folgenden Code fusionieren:
var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
foreach (var item in attrs)
{
if (attr.ContainsKey(item.Key))
{
attr[item.Key] = $"{attr[item.Key]} {item.Value}";
}
else
{
attr.Add(item.Key, item.Value);
}
}
Ich sehe keinen Unterschied zwischen 'new RouteValueDictionary (attrsInDict);' und 'HtmlHelper.AnonymousObjectToHtmlAttributes (attrsInDict);'. Beide lieferten dasselbe Ergebnis. Alles was ich verpasst habe? – Blaise
@Blaise: Diese beiden Beispiele sind nicht gleich; Sie sollten keine Wörterbuchinstanz in die 'HtmlHelper'-Methode übergeben - nur anonyme Objekte.Um das gleiche Ergebnis von einem anonymen Objekt und einer Dictionary-Instanz zu erhalten, müssen Sie die zwei verschiedenen Ansätze verwenden. –