如果我将HtmlAttributes传递到模板中,如下所示:

@Html.DisplayFor(m => m.FirstName, new { htmlAttributes = new { @class = "orangetxt strongtxt" } })

在我的模板中,如何将它们注入(inject)HTML:
<span @ViewData["htmlAttributes"]>@Model</span>

这几乎可以用,但是它确实做了一些很奇怪的事情,所以我假设这不是要走的路。

我意识到我可以使用HtmlHelper扩展方法来完成此操作,以呈现完整的HTML元素(在这种情况下为span)并以这种方式传递属性,但是有一种方法可以将属性直接呈现为HTML元素,就像上面的一样例子?

最佳答案

下面的扩展方法将允许我将HtmlAttributes转换为字符串:

    public static MvcHtmlString RenderHtmlAttributes<TModel>(
        this HtmlHelper<TModel> htmlHelper, object htmlAttributes)
    {
        var attrbituesDictionary = new RouteValueDictionary(htmlAttributes);

        return MvcHtmlString.Create(String.Join(" ",
            attrbituesDictionary.Select(
                item => String.Format("{0}=\"{1}\"", item.Key,
                htmlHelper.Encode(item.Value)))));
    }

然后,要在标签中呈现它们,我可以这样做:
<span @Html.RenderHtmlAttributes(ViewData["htmlAttributes"])>@Model</span>

关于asp.net-mvc-3 - 将HtmlAttributes添加到模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7829643/

10-12 16:50