11

我有一个需要返回 HtmlString 的扩展方法。该方法有一个将构建 HtmlString 的循环,但是 HtmlString 对象没有 Append 方法并且不允许使用 + 运算符进行连接,所以我不确定如何构建 HtmlString。

我想使用 StringBuilder 但它没有 ToHtmlString 方法...

有什么解决方案或模式吗?

4

5 回答 5

34

为什么不直接在 stringbuilder 中构建字符串,然后return MvcHtmlString.Create(sb.ToString());

于 2011-10-26T12:58:17.950 回答
12

我认为您想使用TagBuilder并查看Using the TagBuilder Class to Build HTML Helpers

像下面..

   // Create tag builder
            var builder = new TagBuilder("img");

            // Create valid id
            builder.GenerateId(id);

            // Add attributes
            builder.MergeAttribute("src", url);
            builder.MergeAttribute("alt", alternateText);
            builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));

            // Render tag
            return builder.ToString(TagRenderMode.SelfClosing);
于 2011-10-26T12:50:36.237 回答
1

您可以查看用于创建 HTML 标签的fubu 衍生产品。这是一个关于其用法的 SO question 。

于 2011-10-26T12:46:14.723 回答
1

您可以自己编写该ToHtmlString()方法作为StringBuilder.

于 2011-10-26T12:47:10.450 回答
0

包括使用 TagBuilder 但使用 Html.Raw() 在内的几种解决方案对我来说效果很好:

 public static IHtmlString HtmlMethod(this HtmlHelper htmlhelper, Object object)
        {
 var sb = new StringBuilder();
foreach (var item in object)
{
sb.Append(object.outputStr)
}

return htmlHelper.Raw(sb.ToString());
}
于 2011-10-26T12:57:32.030 回答