При использовании Html.TextBoxFor добавьте имя модели в качестве префикса к идентификатору - PullRequest
12 голосов
/ 02 января 2012

У меня есть проект asp mvc 3 Когда я использую

@Html.TextBoxFor(model => model.Name)

, TexBox для рендеринга как

<input id="Name" name="Name" type="text" value="" />

моя модель "UserModel":

[DisplayName("Name")]
public string Name{ get; set; }

Есть ли способ добавить к названию модели в качестве префикса в id?может быть, какой-то атрибут?

Я хочу, чтобы текстовое поле отображалось как

<input id="UserName" name="UserName" type="text" value="" />

Ответы [ 6 ]

11 голосов
/ 15 апреля 2013
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })

Просто используйте «Имя» вместо «имя»

3 голосов
/ 24 октября 2012

Если вы не хотите визуализировать ввод, как описано в вашей модели, вы, вероятно, не хотите использовать помощник Html.TextBoxFor.

Попробуйте Html.TextBox. Вы можете указать точные значения, которые вы ищете:

@Html.TextBox("UserName", Model.Name, new { id = "UserName" })

Не забывайте, что вы также можете забыть о помощниках и использовать простой старый html:

<input id="UserName" name="UserName" type="text" value="@Model.Name" />

Предупреждение: При использовании любого из этих методов и связующего устройства модели по умолчанию значение этого входа не будет правильно привязано к вашей модели при отправке данных обратно.

2 голосов
/ 02 января 2012

Помощник TextBoxFor использует лямбда-выражение, переданное в качестве первого аргумента, для вычисления имени поля ввода. Поэтому, если вы хотите, чтобы сгенерированное поле ввода было названо UserName, просто переименуйте свойство в вашей модели представления:

[DisplayName("Name")]
public string UserName { get; set; }
0 голосов
/ 08 августа 2014

Если я правильно понял ваш вопрос, вы хотите иметь возможность добавить префикс строки к имени свойства модели.

Поэтому, если вы находитесь в представлении «Учетная запись», вы получите

AccountName

пока в представлении «Тест» вы получите

TestName

Если это так, я думаю, что ваша лучшая ставка - переопределение метода расширения PartialFor, аналогично тому, как это делается здесь:

Частичные представления ASP.NET MVC: префиксы имени ввода

В этом примере будет отображаться

Account.Name and Test.Name
0 голосов
/ 02 января 2012

Вы должны изменить свой атрибут DisplayName с «Имя» на «Имя пользователя».

[DisplayName("UserName")]
public string Name{ get; set; }

Если вы сделаете это, вы получите то, о чем просите.

0 голосов
/ 02 января 2012

Вы можете написать:

@Html.TextBoxFor(model => model.Name, new { @id= "UserName",@Name="UserName" })
...