我有一个扩展方法,需要返回一个HtmlString。该方法有一个循环,将建立HtmlString,但是HtmlString对象没有Append方法,不允许使用+操作符连接,所以我不确定我将如何构建HtmlString。
我想使用StringBuilder,但它没有一个ToHtmlString方法…
对此有什么解决方案或模式吗?
为什么不直接在stringbuilder中构建字符串,然后
return MvcHtmlString.Create(sb.ToString());
我认为你想使用TagBuilder。参见使用TagBuilder类构建这样的HTML帮助器:
// 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);
您可以看看用于创建HTML标记的fubu派生。下面是一个SO问题,它讨论了一些关于它的用法。
您可以自己编写ToHtmlString()
方法作为StringBuilder
的扩展方法。
有几个解决方案,包括使用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());
}