如何将对象传递给HTML属性?
例如,我有以下代码:
var attrs = new { id = "myid", style = "color: Red;" };
如何将attrs转换为这样的字符串以将它们嵌入HTML标记中:
id="myid" style="color: Red;"
提前致谢 :)
最佳答案
令人惊讶的是,此功能由 RouteValueDictionary
类提供:
IDictionary<string, object> htmlAttributes = new RouteValueDictionary(attrs);
然后,您可以将此字典与
TagBuilder
结合使用,无论如何您都可能会使用它:var tagBuilder = new TagBuilder("input");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.ToString(TagRenderMode.Normal);
您可以在ASP.NET MVC源代码本身中看到这一点;较简单的示例之一是TextAreaExtensions.cs。
编辑:
为了正确地将“data_attr”转换为“data-attr”,请使用
AnonymousObjectToHtmlAttributes
静态方法。IDictionary<string, object> htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(attrs);