获取表单字段生成的clientid

Jok*_*kin 15 asp.net-mvc

有没有办法为使用html帮助器生成的字段生成客户端ID?

我有几个组件,有时在另一种形式,我不想将javascript事件附加到他们.

所以,对于样品,我希望:

@Html.TextBoxFor(model => model.client.email)

<script> 
$('#@getmyusercontrolid(model=>model.client.email)').val("put your mail here");
</script>
Run Code Online (Sandbox Code Playgroud)

Joh*_*eer 31

我用这个助手:

public static partial class HtmlExtensions
{
    public static MvcHtmlString ClientIdFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
    {
        return MvcHtmlString.Create(htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression)));
    }
}
Run Code Online (Sandbox Code Playgroud)

像使用任何其他助手一样使用它: @Html.ClientIdFor(model=>model.client.email)


The*_*lus 11

MVC 5有NameFor,所以使用它的例子是:

@Html.TextBoxFor(model => model.client.email)

<script> 
$('#@Html.NameFor(model => model.client.email)').val("put your mail here");
</script>
Run Code Online (Sandbox Code Playgroud)

编辑

IdFor也可用,在这种情况下可能更合适NameFor.


Pro*_*ing 6

使用@Html.IdFor(model => model.client.email)如该功能已经存在像这样:

@Html.TextBoxFor(model => model.client.email)

<script> 
$('#@Html.IdFor(model => model.client.email)').val("put your mail here");
</script>
Run Code Online (Sandbox Code Playgroud)

您可以在以下页面阅读更多相关信息:https: //msdn.microsoft.com/en-us/library/hh833709%28v=vs.118%29.aspx


tob*_*s86 5

您可以尝试在生成输入字段时在HtmlAttributes参数中指定id,例如

@Html.TextBoxFor(model => model.client.email, new { id = "emailTextBox" })
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的javaScript中使用它

var email = $('#emailTextBox').val();
Run Code Online (Sandbox Code Playgroud)