Я пытаюсь добавить атрибут html для EditorFor
@Html.EditorFor(model => model.UserName, new { style = "width: 100px" })
Но каким-либо образом я получаю
<input id="UserName" class="text-box single-line" type="text" value="" name="UserName">
Я пытаюсь добавить атрибут html для EditorFor
@Html.EditorFor(model => model.UserName, new { style = "width: 100px" })
Но каким-либо образом я получаю
<input id="UserName" class="text-box single-line" type="text" value="" name="UserName">
EditorFor будет перезаписывать эти атрибуты. См. атрибуты HTML для редактора() в ASP.NET MVC для обходных путей.
Если все, что вам нужно изменить, это отображение ширины, и вы не полагаетесь на какие-либо шаблоны редакторов, самым простым решением является использование TextBoxFor вместо
@Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })
У меня была такая же проблема, и это решило ее...
<style type="text/css">
#UserName {
width: 100px;
}
</style>
@Html.EditorFor(model => model.UserName)
@Html.EditorFor()
динамически решает тип используемого элемента управления на основе элемента модели.
Эти настройки работают с @Html.LabelFor()
из @Html.TextBoxFor()
. Следующий код был тестированием и работает правильно.
Бритва:
@Html.LabelFor(model => model.UserName, null, new { style = "display: inline;" })
@Html.TextBoxFor(model => model.UserName, null, new { style = "display: inline;" })
Сгенерированный HTML
<label style="display: inline;" for="UserName">
<input name="LastActivityDate" id="UserName" style="display: inline;" type="text" value=""/>
Обратите внимание, что второй аргумент прошел null
, стиль - третий атрибут. если использование @Html.EditorFor()
является обязательным, тогда вам нужно использовать класс CSS вместо стиля
@Html.EditorFor()
on MSDN
Примечание. Код был протестирован с MVC4 и, надеюсь, он действителен и для MVC3.
Вместо использования
@Html.EditorFor(model = > model.UserId)
Используйте
@Html.TextBoxFor(model = > model.UserId, new {@Value =" Prabhat"})
Для чего это стоило, у меня была такая же проблема. Я решил это, используя немного другую версию решения Narenda V.
Я создал такой класс: (note - min-width вместо ширины)
.userName { min-width:40em; }
то на мой взгляд:
@Html.EditorFor(model => model.UserName, new { @class = "userName" })
Когда я не использовал min-width, но ширину, это не сработало. Боб
Если вам нужно использовать EditorFor, а не TextBoxFor, и у вас есть несколько редакторов на странице, но нужно только изменить ширину конкретных... Самое простое, что добавить CSS-стиль в идентификатор класса:
<style type="text/css">
input#UserName { width: 100px; }
</style>
Вы можете создать класс стиля в .css, например
.userName
{
width: 150px;
}
Стиль может быть связан с атрибутом класса html.
@Html.EditorFor(model => model.UserName, new { @class = "userName" })