mvc 3 Html.Editor для добавления атрибута html не работает - PullRequest
19 голосов
/ 01 июля 2011

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

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

Но в любом случае я получаю

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

Ответы [ 7 ]

17 голосов
/ 01 июля 2011

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

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

 @Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })
7 голосов
/ 17 июля 2012

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

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

@Html.EditorFor(model => model.UserName)
2 голосов
/ 28 мая 2013

@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() на MSDN

Примечание: Код был протестирован с MVC4 и, надеюсь, он действителен и для MVC3

1 голос
/ 10 января 2014

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

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

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

<style type="text/css">
    input#UserName { width: 100px; }
</style>
0 голосов
/ 07 сентября 2011

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

Я создал такой класс: (примечание - минимальная ширина вместо ширины)

.userName { min-width:40em; }

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

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

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

0 голосов
/ 04 июля 2011

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

.userName
{
   width: 150px;
}

Стиль можно применить с помощью атрибута html class.

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