Создание 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());
Ответ 3
Вы можете посмотреть fubu spin-off для создания HTML-тэгов. Вот вопрос SO, который немного говорит о его использовании.
Ответ 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());
}