Я работал над HtmlHelper.AnonymousObjectToHtmlAttributes
.Как правильно разобрать словарь <string, object> в
Он хорошо работает с анонимной объекта:
var test = new {@class = "aaa", placeholder = "bbb"};
var parseTest= HtmlHelper.AnonymousObjectToHtmlAttributes(test);
Результат parseTest
имеет две пары ключ-значение.
Но для Dictionary
объекта:
var attrsInDict = new Dictionary<string,object>() {
{"class", "form-control"},
{"placeholder", "Select one..."}
};
var attrs = HtmlHelper.AnonymousObjectToHtmlAttributes(attrsInDict);
attrs
получается странный объект, с 4 клавишами и 4 значения. 4 клавиши: Сравнение, Подсчет, Ключи, Значения.
Некоторое другое сообщение SO, спрашивающее о различии между ними (here). Выбранный ответ говорит
Там не слишком большая разница ...
на самом деле? И каков правильный способ разобрать attrsInDict
и получить тот же результат, что и тот, который мы получаем от анонимного объекта?
Ибо я намерен объединить attribues в следующем коде:
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);
}
}
Я не вижу разницы между 'new RouteValueDictionary (attrsInDict);' и 'HtmlHelper.AnonymousObjectToHtmlAttributes (attrsInDict);'. Оба возвратили тот же результат. Что-нибудь я пропустил? – Blaise
@Blaise: Эти два примера не то же самое; вы не должны передавать экземпляр слова в метод 'HtmlHelper' - только анонимные объекты.Чтобы получить тот же результат от анонимного объекта и экземпляра словаря, вам нужно использовать два разных подхода. –