1

これは、カスタム HTML ヘルパーを作成して ID を生成しようとした方法ですが、かみそりでタグを使用すると、レンダリング時にすべてのタグに対して同じ ID が取得され、解決策を見つけるのに役立ちます。

public static MvcHtmlString MyLabel(this HtmlHelper html, string text)
        {
            var builder = new TagBuilder("myLable");

            builder.GenerateId("MyLableId1");

            builder.SetInnerText(text);
            return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
        }

かみそりで

@using MvcAppCustomeHtmlHelpers.Helper;
@Html.MyLabel("username")
@Html.TextBox("username")<br/>
@Html.MyLabel("password")
@Html.TextBox("password")

テキストボックスをレンダリングすると、IDは他のテキストボックスのユーザー名とパスワードになりますが、カスタムHTMLヘルパーのテキストボックスのようなIDを取得できません

4

2 に答える 2

3

もう 1 つのパラメータ「id」を渡すだけです。

public static MvcHtmlString MyLabel(this HtmlHelper html, string text, string id)
{
    var builder = new TagBuilder("myLable"); 
    builder.GenerateId(id);    
    builder.SetInnerText(text);
    return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}

これで、次を使用できます。

@Html.MyLabel("username", "label1") 
@Html.MyLabel("username", "label2")   
于 2013-07-25T07:03:51.027 に答える
0

あなたがしたいTagBuilder.GenerateId

builder.GenerateId(text);

正直に言うと、これは Google が簡単に説明してもわからないことではありません。

http://www.asp.net/mvc/tutorials/older-versions/views/using-the-tagbuilder-class-to-build-html-helpers-cs

于 2013-07-25T07:04:55.060 に答える