Ответ 1
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })
Просто используйте "Имя" вместо "name"
У меня есть проект 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="" />
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })
Просто используйте "Имя" вместо "name"
Если вы не хотите отображать ввод, как описано в вашей модели, вы, вероятно, не хотите использовать помощник Html.TextBoxFor
.
Попробуйте Html.TextBox
. Вы можете предоставить ему точные значения, которые вы ищете:
@Html.TextBox("UserName", Model.Name, new { id = "UserName" })
Не забывайте, что вы также можете забыть помощников и использовать простой старый html:
<input id="UserName" name="UserName" type="text" value="@Model.Name" />
Предупреждение: При использовании любого из этих методов и связующего устройства по умолчанию значение этого ввода не будет возвращено к вашей модели правильно при отправке данных.
Помощник TextBoxFor использует выражение лямбда, которое передается в качестве первого аргумента для вычисления имени поля ввода. Поэтому, если вы хотите, чтобы сгенерированное поле ввода вызывалось UserName
, просто переименуйте свойство в вашей модели представления:
[DisplayName("Name")]
public string UserName { get; set; }
Вы должны изменить свой атрибут DisplayName с "Name" на "UserName".
[DisplayName("UserName")]
public string Name{ get; set; }
Если вы это сделаете, вы получите то, о чем вы просите.
Если я правильно понял ваш вопрос, вы хотите иметь возможность префикс строки в имени свойства Model.
Поэтому, если вы находитесь в режиме просмотра "Учетная запись", вы получите
AccountName
в то время как в представлении "Тест" вы получите
TestName
Если это так, я думаю, что ваш лучший выбор - переопределить метод расширения PartialFor, аналогично тому, как это делается:
Частичные представления ASP.NET MVC: префиксы ввода имени
В этом примере он отобразит
Account.Name and Test.Name
Вы можете написать:
@Html.TextBoxFor(model => model.Name, new { @id= "UserName",@Name="UserName" })