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 是其他文本框的用户名和密码,但我无法为我的 custome html helper 获取文本框之类的 id

4

2 回答 2

3

只需再传递一个参数“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 回答