Класс HtmlHelper позволяет преобразовывать объект Anonymouns Object в RouteValueDictonary, и я предполагаю, что вы можете использовать .ToString () для каждого значения, чтобы получить представление строки:
var linkAttributes = System.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes(linkHtmlAttributes);
Недостатком является то, что это частьASP.NET MVC Framework.Используя .NET Reflector, код внутри метода выглядит следующим образом:
public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes)
{
RouteValueDictionary dictionary = new RouteValueDictionary();
if (htmlAttributes != null)
{
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(htmlAttributes))
{
dictionary.Add(descriptor.Name.Replace('_', '-'), descriptor.GetValue(htmlAttributes));
}
}
return dictionary;
}
Вы увидите, что этот код идентичен ответу, который дал мне Яхья, а его ответ содержит Dictonary,С помощью отраженного кода, который я дал вам, вы можете легко конвертировать RouteValueDictionary в Dictonaryно ответ Яхии - это одна строка.
РЕДАКТИРОВАТЬ - я добавил код для того, что может быть методом для конвертации:
РЕДАКТИРОВАТЬ 2- Я добавил нулевую проверку в код и использовал String.Format для строкового значения
public static Dictionary<string, string> ObjectToDictionary(object value)
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
if (value != null)
{
foreach (System.ComponentModel.PropertyDescriptor descriptor in System.ComponentModel.TypeDescriptor.GetProperties(value))
{
if(descriptor != null && descriptor.Name != null)
{
object propValue = descriptor.GetValue(value);
if(propValue != null)
dictionary.Add(descriptor.Name,String.Format("{0}",propValue));
}
}
return dictionary;
}
И чтобы перейти от словаря к проверке объекта http://automapper.org/, которая была предложенав этой теме Преобразовать словарь в анонимный объект