11

HtmlStringを返す必要がある拡張メソッドがあります。このメソッドにはHtmlStringをビルドするループがありますが、HtmlStringオブジェクトにはAppendメソッドがなく、+演算子を使用した連結が許可されていないため、HtmlStringをビルドする方法がわかりません。

StringBuilderを使用したいのですが、ToHtmlStringメソッドがありません...

このための解決策やパターンはありますか?

4

5 に答える 5

34

文字列ビルダーで文字列を作成してから、return MvcHtmlString.Create(sb.ToString());

于 2011-10-26T12:58:17.950 に答える
12

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);
于 2011-10-26T12:50:36.237 に答える
1

HTMLタグを作成するためのfubuスピンオフを見ることができます。これは、その使用法について少し話しているSOの質問です。

于 2011-10-26T12:46:14.723 に答える
1

ToHtmlString()に拡張メソッドとしてメソッドを自分で書くことができますStringBuilder

于 2011-10-26T12:47:10.450 に答える
0

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());
}
于 2011-10-26T12:57:32.030 に答える