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

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

11 голосов
/ 26 октября 2011

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

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

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

Ответы [ 5 ]

34 голосов
/ 26 октября 2011

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

12 голосов
/ 26 октября 2011

я думаю, что вы хотите использовать 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);
1 голос
/ 26 октября 2011

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

1 голос
/ 26 октября 2011

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

0 голосов
/ 26 октября 2011

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