如何在mvc中为自定义助手生成id

时间:2013-07-25 07:00:53

标签: asp.net-mvc asp.net-mvc-4

这就是我尝试创建自定义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文本框

2 个答案:

答案 0 :(得分:2)

再传递一个参数“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")   

答案 1 :(得分:0)

您想要TagBuilder.GenerateId

builder.GenerateId(text);

老实说,这不是一个快速的谷歌不能告诉你的:

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