问题在asp.net mvc中为文本框创建动态Id

时间:2010-06-08 08:56:29

标签: asp.net-mvc

我在三个不同的选项卡控件中有3个文本框,我想生成文本框ID,如textbox加上连接选项卡编号

for(int i=0;i<3;i++)
{
    <%: Html.TextBoxFor(e=>e.vcr_LinkName + i)%>
}

它无法正常工作,但当我将其更改为

 for(int i=0;i<3;i++)
    {
        <%: Html.TextBox("vcr_LinkName" + i)%>
    }

它工作正常。但我想使用textboxfor而不是textbox

1 个答案:

答案 0 :(得分:1)

您无法以这种方式真正使用textboxfor,因为您在模型上没有要绑定它的属性。但是,您还有其他一些选择。

您可以在模型上有一个字符串列表,并执行以下操作:

for(int i = 0; i < 3; i++)
{
    <%:Html.TextBoxFor(x => x.LinkNames[i])%>
}

您可以像这样建立自己的帮手:

public static MvcHtmlString TextBoxWithSuffix<TModel, TProperty>(this HtmlHelper helper, Expression<Func<TModel, TProperty>> expression, string suffix)
{
    var id = ExpressionHelper.GetExpressionText(expression);
    return helper.TextBox(string.Format("{0}{1}", id, suffix);
}

并像这样使用它:

for(int i = 0; i < 3; i++)
{
    <%:Html.TextBoxWithSuffix(x => x.vcr_LinkName, i.ToString())%>
}