我有一个需要返回 HtmlString 的扩展方法。该方法有一个将构建 HtmlString 的循环,但是 HtmlString 对象没有 Append 方法并且不允许使用 + 运算符进行连接,所以我不确定如何构建 HtmlString。
我想使用 StringBuilder 但它没有 ToHtmlString 方法...
有什么解决方案或模式吗?
我有一个需要返回 HtmlString 的扩展方法。该方法有一个将构建 HtmlString 的循环,但是 HtmlString 对象没有 Append 方法并且不允许使用 + 运算符进行连接,所以我不确定如何构建 HtmlString。
我想使用 StringBuilder 但它没有 ToHtmlString 方法...
有什么解决方案或模式吗?
为什么不直接在 stringbuilder 中构建字符串,然后return MvcHtmlString.Create(sb.ToString());
我认为您想使用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);
您可以查看用于创建 HTML 标签的fubu 衍生产品。这是一个关于其用法的 SO question 。
您可以自己编写该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());
}