使用@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选择器。
答案 0 :(得分:0)
编写一个获取属性的简单方法,并使用反射返回其名称,并使用它:
static string GetVariableName<T>(Expression<Func<T>> expression)
{
var body = expression.Body as MemberExpression;
return body.Member.Name;
}
$('#' + @(GetVariableName(() => Model.MyField)))
应该工作。