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

Mvc 3 Html.EditorДля добавления атрибута html не работает

Я пытаюсь добавить атрибут html для EditorFor

 @Html.EditorFor(model => model.UserName, new { style = "width: 100px" })

Но каким-либо образом я получаю

<input id="UserName" class="text-box single-line" type="text" value="" name="UserName">
4b9b3361

Ответ 1

EditorFor будет перезаписывать эти атрибуты. См. атрибуты HTML для редактора() в ASP.NET MVC для обходных путей.

Если все, что вам нужно изменить, это отображение ширины, и вы не полагаетесь на какие-либо шаблоны редакторов, самым простым решением является использование TextBoxFor вместо

 @Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })

Ответ 2

У меня была такая же проблема, и это решило ее...

<style type="text/css">
#UserName { 
    width: 100px; 
}
</style>

@Html.EditorFor(model => model.UserName)

Ответ 3

@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.

Ответ 4

Вместо использования
@Html.EditorFor(model = > model.UserId)
Используйте
@Html.TextBoxFor(model = > model.UserId, new {@Value =" Prabhat"})

Ответ 5

Для чего это стоило, у меня была такая же проблема. Я решил это, используя немного другую версию решения Narenda V.

Я создал такой класс: (note - min-width вместо ширины)

.userName { min-width:40em; }

то на мой взгляд:

@Html.EditorFor(model => model.UserName, new { @class = "userName" })

Когда я не использовал min-width, но ширину, это не сработало. Боб

Ответ 6

Если вам нужно использовать EditorFor, а не TextBoxFor, и у вас есть несколько редакторов на странице, но нужно только изменить ширину конкретных... Самое простое, что добавить CSS-стиль в идентификатор класса:

<style type="text/css">
    input#UserName { width: 100px; }
</style>

Ответ 7

Вы можете создать класс стиля в .css, например

.userName
{
   width: 150px;
}

Стиль может быть связан с атрибутом класса html.

@Html.EditorFor(model => model.UserName, new { @class = "userName" })