ASP.NET MVC3获取自动生成的表单元素ID

时间:2012-01-09 02:22:21

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

使用@Html.TextBoxFor(m => m.MyField)会(通常?)会导致<input id="MyField" name="MyField" type="text" value="" />,如果我想在jquery中访问该元素,我会按照以下$("#MyField")进行操作。有没有办法避免手动将ID输入jquery选择器?我这样做似乎很笨,因为我来自一个经典的asp.net背景,你将使用ClientID属性拉出元素的id。因此,如果渲染器改变了生成ID的方式,则代码会自动保持最新。在上面的示例中,如果我将MyField更改为MyNewField,编译器将提醒我更改所有强类型引用,但没有任何内容会提醒我更改我的jquery选择器。

1 个答案:

答案 0 :(得分:0)

编写一个获取属性的简单方法,并使用反射返回其名称,并使用它:

static string GetVariableName<T>(Expression<Func<T>> expression)
{
    var body = expression.Body as MemberExpression;

    return body.Member.Name;
}

$('#' + @(GetVariableName(() => Model.MyField)))

应该工作。