Изменить класс @Html.EditorFor/настроить шаблон | ASP.NET MVC 4

Я хочу изменить класс/стиль моего поля @Html.EditorFor. Я что-то читал о настройке шаблона, но в моем проекте нет папки шаблона (Views/Shared/ONLY_FILES_HERE). К сожалению, я НЕ работаю с MVC 5.1.

Также я НЕ хочу использовать TextBoxFor из-за проверки ввода.

Как я могу этого добиться?

Вот фрагмент моей модели:

public class CreateTableColumnModels
{
    [RegularExpression(@"^[A-Za-z0-9]+$", ErrorMessage = "Use letters and numbers only please")]
    [Display(Name = "Name")]
    public string Name { get; set; }

Я пробовал это:

@model QlikViewStammdaten.Models.CreateTableColumnModels
<div>
    @Html.EditorFor(x => Model.Name, new { @class = "form-control" })
</div>

person David Walser    schedule 17.07.2018    source источник
comment
Пробовали с: @Html.EditorFor(x=›x.MyProperty, new {htmlAttributes = new {@class = MyCssClass}})   -  person Prashant Pimpale    schedule 17.07.2018
comment
Просто создайте папки Editor/DisplayTemplates внутри папки Views/Shared и добавьте ‹classname›.cshtml   -  person phuzi    schedule 17.07.2018
comment
@PrashantPimpale да, это для = MVC 5.1   -  person David Walser    schedule 17.07.2018
comment
Взгляните на: stackoverflow.com/a/4577748/7124761   -  person Prashant Pimpale    schedule 17.07.2018
comment
@phuzi, поэтому файл будет CreateTableColumnModels.cshtml   -  person David Walser    schedule 17.07.2018
comment
@PrashantPimpale извините, я забыл упомянуть, что не хочу использовать TextBoxFor   -  person David Walser    schedule 17.07.2018
comment
@DavidWalser, да. Убедитесь, что модель, используемая шаблоном, также является CreateTableColumnModels.   -  person phuzi    schedule 17.07.2018
comment
@phuzi не работает с приведенным выше кодом:/ файл называется CreateTableColumnModels.cshtml   -  person David Walser    schedule 17.07.2018
comment
@phuzi не подведи меня :(   -  person David Walser    schedule 17.07.2018
comment
Что не так с использованием TextBoxFor? (в конечном итоге они все равно вызывают один и тот же код). И с проверкой проблем нет.   -  person    schedule 17.07.2018
comment
@StephenMuecke, например, когда поле предназначено для целых чисел, пользователям разрешено записывать символы в TextBoxFor, но НЕ в EditorFor   -  person David Walser    schedule 17.07.2018
comment
Затем просто добавьте type = "number"   -  person    schedule 17.07.2018
comment
@StephenMuecke хм, хорошо, спасибо, меня устраивает это решение :)   -  person David Walser    schedule 17.07.2018


Ответы (1)


Как уже было сказано в комментариях лучше добавлять класс в Html.TextBoxFor а НЕ @Html.EditorFor. Почему? потому что @Html.EditorFor отображает шаблон, и этот шаблон может содержать несколько элементов управления (теперь к какому из этих элементов управления вы хотите добавить класс?)... см. Добавление класса в EditorFor

Если вы хотите числовой тип, добавьте @type = "number"

@Html.TextBoxFor(m => m.Name, new { @class = "form-control", @type = "number"  }) 

Примечание: это не x => Model.Name, а m => m.Name

Я уверен, что вы уже это знаете, но [Display(Name = "Name")] в вашей модели является избыточным, так как отображаемое имя по умолчанию — это имя самой переменной.

person Hooman Bahreini    schedule 17.07.2018