Создание 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());
}