如何将匿名对象转换为键/值对或HTML属性?

Jus*_*gan 4 html c# anonymous-types asp.net-mvc-3

在我的MVC应用程序中,我有一个帮助类,用于呈现一组相关的按钮.我试图将按钮的HTML属性作为匿名对象传递:

new { @class="myClass1 myClass2" }
Run Code Online (Sandbox Code Playgroud)

帮助程序将HTML作为一个MvcHtmlString,我目前正在构建如下:

        foreach (var b in _buttons)
        {
            sb.AppendFormat("<button type='submit' name='{0}' {1}>{2}</button>",
                b.Value,
                b.HtmlAttributes,
                b.Text);
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是上面的代码产生无效的HTML:

<button type='submit' name='Foo' { class = myClass1 myClass2 }>Bar</button>
Run Code Online (Sandbox Code Playgroud)

不幸的是,因为它作为一个传递给帮助器object,我没有要使用的类型信息.我可以ToString对象并解析结果,但这看起来很傻.如何以编程方式将匿名对象转换为key="value"样式HTML属性?这是否有现有的实用程序?

SLa*_*aks 14

您应该使用TagBuilder为您构建HTML标记的类.

然后你可以写

builder.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(HtmlAttributes));
Run Code Online (Sandbox Code Playgroud)