2015-08-13 2 views
0

Есть несколько вопросов по подобным темам. Однако они фактически не затрагивают мою проблему.Могу ли я изменить ширину редактора For с аннотациями данных?

DisplayFormat for TextBoxFor in MVC

Display a formatted date in an EditorFor()

ASP.NET MVC EditorFor DateTime

Я искал и читал и не могу найти ответ на этот вопрос.

В настоящее время я использую это, чтобы отформатировать поле ввода:

@Html.TextBoxFor(modelItem => item.Quantity, new { style = "width: 30px;" }) 

С моей модели я имею краткую аннотацию данных:

[Required, Range(1, 100)] 
public int Quantity { get; set; } 

Так я получаю это:

enter image description here

Когда я использую

@Html.EditorFor(modelItem => item.Quantity, new { style = "width: 30px;" }) 

я получаю это:

enter image description here

То, что я хочу, это свиток, но форматировать ширину.

Мне интересно, есть ли способ отформатировать ширину EditorFor с помощью data annotations? Если нет, то какой самый простой способ сделать такой формат, чтобы избежать повторения. bootstrap, css? Я не доволен встроенным стилем.

+0

Вы используете MVC-5.1 +. Если нет, вы не можете передавать атрибуты html в шаблон редактора по умолчанию (вам нужно будет создать собственный пользовательский 'EditorTemplate'). В качестве альтернативы используйте '@ Html.TextBoxFor (m => m.Quantity, new {type =" number ", style =" width: 30px; "})' –

+0

MVC 4 @StephenMuecke. Я буду обновляться для следующего проекта. –

+0

@StephenMuecke Спасибо за это.можете ли вы опубликовать это как ответ ?, Я не уверен в пользовательском EditorTemplate. Вы также можете получить очки –

ответ

1

Из комментариев, используя MVC-4. Вы не можете передавать HTML атрибуты метода EditorFor() если ваш использованием MVC-5.1 или выше (отсылаем release notes - раздел о поддержка Bootstrap для шаблонов редактора)

Одним из вариантов является использование метода TextBoxFor() и передать type="number" для визуализации браузеры числового программного управления

@Html.TextBoxFor(m => m.Quantity, new { type = "number ", style = "width: 30px;" }) 

Еще бы создать пользовательский EditorTemplate (скажут _NumericControl.cshtml)

@model System.Int32 
@Html.TextBoxFor(m => m, new { type = "number ", style = "width: 30px;" }) 

и вызвать его с помощью @Html.EditorFor(m => m.Quantity, "_NumericControl")

, но это будет действительно только какой-либо реальной пользы, если шаблон также включать другие элементы HTML, например @Html.LabelFor(m => m) и @Html.ValidationMessageFor(m => m) и, возможно, даже соответствующей кнопки, так что метод EditorFor() оказывает все элементы.

+0

Спасибо за это, я думаю, что это полезная информация. –

Смежные вопросы