Подтвердить что ты не робот

При использовании Html.TextBoxFor добавьте имя модели в качестве префикса к id

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

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

инструмент TexBoxFor как

<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="" />
4b9b3361

Ответ 1

@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

Вы должны изменить свой атрибут DisplayName с "Name" на "UserName".

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

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

Ответ 5

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

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

AccountName

в то время как в представлении "Тест" вы получите

TestName

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

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

В этом примере он отобразит

Account.Name and Test.Name

Ответ 6

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

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