如何将对象传递给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);

08-27 00:50