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

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

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

Какие-либо решения или шаблоны для этого?

5 ответов

Решение

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

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

Вы могли бы взглянуть на спин-офф fubu для создания HTML-тегов. Вот такой вопрос, который немного говорит о его использовании.

Вы могли бы написать 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());
}
Другие вопросы по тегам