3

組み合わせタグを作成しようとしています:

最初のタグ: <span class="requiredInidicator">* </span> 2 番目のタグ: <label>SomeText</label>(簡潔にするために省略された属性)

これらを組み合わせて MVCHtmlString を返したいのですが、次のコードはスパンを完全に無視します。誰かが私が間違っていることを指摘できますか

これが私のコードです:

// Create the Label
var tagBuilder = new TagBuilder("label");
tagBuilder.Attributes.Add("id", "required" + id);
//I get the id earlier fyi - not pertinent fyi for this question )

// Create the Span
var required = new TagBuilder("span");
required.AddCssClass("requiredInidicator"); 
required.SetInnerText("* ");

//Now combine the span's content with the label tag
tagBuilder.InnerHtml += required.ToString(TagRenderMode.Normal);
tagBuilder.SetInnerText(labelText);
var tag = MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));
return tag;

タグが作成されると、スパンは完全に無視されます。デバッグ中にタグを検査すると、追加した必要なものは気にしません.InnerHtml+=

私が間違っていることは明らかですか?

4

5 に答える 5

7

このようにしてみてください:

var label = new TagBuilder("label");
label.Attributes.Add("id", "required" + id);
//I get the id earlier fyi - not pertinent fyi for this question )

// Create the Span
var span = new TagBuilder("span");
span.AddCssClass("requiredInidicator");
span.SetInnerText("* ");

//Now combine the span's content with the label tag
label.InnerHtml = span.ToString(TagRenderMode.Normal) + htmlHelper.Encode(labelText);
return MvcHtmlString.Create(label.ToString(TagRenderMode.Normal));
于 2012-12-06T15:35:55.520 に答える
3

電話をかけるべきではありませんSetInnertext(特に を割り当てた直後Innerhtml)。どちらか一方を使用する必要があります。

追加する場合は、そのまま続けてInnerHtml += labeltextください。

于 2012-12-06T15:32:44.457 に答える
2

あなたはいつでもすることができます:

string output = "";
output += tabBuilder.ToString(TagRenderMode.Normal);
output += required.ToString(TagRenderMode.Normal);

return MvcHtmlString.Create(output);

問題は、TagBuilderが1つのルートレベルのHTMLタグを想定していることである可能性がありますが、それについてはよくわかりません。

于 2012-12-06T15:31:34.913 に答える
2

これはどう:

tagBuilder.SetInnerText(labelText + required.ToString(TagRenderMode.Normal));
于 2012-12-06T15:32:57.483 に答える
1

スパンで InneHtml プロパティを使用してみてください

// Create the Span
var required = new TagBuilder("span");
required.InnerHtml ("SOME TEXT");
于 2012-12-06T15:33:56.790 に答える