Создание HtmlStrings в ASP.NET MVC

У меня есть метод расширения, который должен вернуть HtmlString. Метод имеет цикл, который будет строить HtmlString, однако объект HtmlString не имеет метода Append и не позволяет конкатенацию с помощью оператора +, поэтому я не уверен, как я буду строить HtmlString.

Я хотел бы использовать StringBuilder, но у него нет метода ToHtmlString...

Любые решения или шаблоны для этого?

Ответ 1

Я думаю, вы хотите использовать 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);

Ответ 2

Почему бы просто не построить строку в построителе строк, а затем return MvcHtmlString.Create(sb.ToString());

Ответ 4

Вы можете написать метод ToHtmlString() самостоятельно как метод расширения на StringBuilder.

Ответ 5

Несколько решений для этого, включая использование 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());
}