получить сгенерированный клиент для поля формы - PullRequest
15 голосов
/ 24 марта 2011

Есть ли способ получить идентификатор клиента, сгенерированный для поля, созданного с помощью помощника HTML?

У меня есть несколько компонентов, которые иногда находятся внутри других форм, и я не хочу прикреплять к ним события javascript.

Итак, для примера, я хотел бы иметь:

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

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

Ответы [ 4 ]

31 голосов
/ 24 марта 2011

Я использую этот помощник:

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)));
    }
}

Используйте его так же, как и любого другого помощника: @Html.ClientIdFor(model=>model.client.email)

10 голосов
/ 05 июня 2014

MVC 5 имеет NameFor , поэтому ваш пример использования:

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

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

EDIT

IdFor также доступно, что может быть более подходящим в этой ситуации, чем NameFor.

5 голосов
/ 28 августа 2015

Используйте @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>

Подробнее об этом можно прочитать на следующей странице: https://msdn.microsoft.com/en-us/library/hh833709%28v=vs.118%29.aspx

5 голосов
/ 24 марта 2011

Вы можете попытаться указать идентификатор в аргументе HtmlAttributes при создании поля ввода, например,

@Html.TextBoxFor(model => model.client.email, new { id = "emailTextBox" })

Затем вы можете использовать это в своем javaScript

var email = $('#emailTextBox').val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...