HtmlStringを返す必要がある拡張メソッドがあります。このメソッドにはHtmlStringをビルドするループがありますが、HtmlStringオブジェクトにはAppendメソッドがなく、+演算子を使用した連結が許可されていないため、HtmlStringをビルドする方法がわかりません。
StringBuilderを使用したいのですが、ToHtmlStringメソッドがありません...
このための解決策やパターンはありますか?
HtmlStringを返す必要がある拡張メソッドがあります。このメソッドにはHtmlStringをビルドするループがありますが、HtmlStringオブジェクトにはAppendメソッドがなく、+演算子を使用した連結が許可されていないため、HtmlStringをビルドする方法がわかりません。
StringBuilderを使用したいのですが、ToHtmlStringメソッドがありません...
このための解決策やパターンはありますか?
文字列ビルダーで文字列を作成してから、return MvcHtmlString.Create(sb.ToString());
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);
HTMLタグを作成するためのfubuスピンオフを見ることができます。これは、その使用法について少し話しているSOの質問です。
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());
}