Настройте EditorFor или любой XXXXFor

Всякий раз, когда я использую @Html.EditorForModel() следующий стандартный шаблон отображается в asp.net mvc

По умолчанию в шаблоне Asp.net MVC

<div class="editor-label">
  <label for="[MY-PROPERTY]">MY-PROPERTYNAME</label>
</div>
<div class="editor-field">
  <input id="[MY-PROPERTYID]" name="MY-PROPERTYNAME" type="text" value=""> 
  <span class="field-validation-valid" data-valmsg-for="MY-PROPERTYNAME" data-valmsg-replace="true"></span>
</div>

Я хотел бы настроить формат этого HTML!

Но внимание!!!!!

  1. Я знаю эту функцию -> @Html.EditorForModel("MY-TEMPLATE")
  2. Я знаю эту функцию -> @Html.EditorFor(p => p.MY-PROPERTY, "MY-TEMPLATE")
  3. Я знаю эту функцию -> Views\{CONTROLLER}\EditorTemplates\{CLASSNAME\TYPE}
  4. Я знаю эту функцию -> Views\Shared\EditorTemplates\{CLASSNAME\TYPE}

Моя цель - изменить шаблон по умолчанию для всего проекта!

Без необходимости путешествовать весь проект для этого!

  • Когда используешь @Html.EditorForModel(), каждое свойство будет генерировать индивидуальный HTML!

Новый шаблон

Новый шаблон будет примерно таким:

<div class="control-group">
    @Html.LabelFor(p => p.PROPERTY, new { @class = "control-label" })
    <div class="controls">
        @Html.EditorFor(p => p.PROPERTY)
        <span class="help-inline"></span>
    </div>
</div>

3 ответа

Вы могли бы создать Object.cshtml шаблон к вашему Views\Shared\EditorTemplates\ папка и @Html.EditorForModel() будет использовать этот шаблон, если он не может найти более конкретный (например, шаблон с именем classname.cshtml)

Вы могли бы далее прочитать Пользовательские Шаблоны Объекта Брэдом Уилсоном

Зачем переписывать ASP.NET MVC? Не слишком ли большая задача воссоздать то, что Microsoft (с их возможностями массового производства) создавала в течение последних 5 лет?

Я предлагаю (очевидно, далеко не единственный способ жить), чтобы определить как можно больше DisplayTemplates а также EditorTemplates как вам нравится для типов вам нужно и покончим с этим.

Каркас по определению является расширяемым. То, что вы пытаетесь сделать, это заменить один из главных полюсов в нем. И я не знаю, стоит ли это того. - Просто мнение.

Надеюсь это поможет.

Я пытался сделать то же самое. Каким-то образом переписать или переопределить методы Editor, EditorFor или EditorForModel, потому что я хотел изменить вывод HTML в целом. Я нашел эту статью, которая может помочь: http://www.headcrash.us/blog/2011/09/custom-display-and-editor-templates-with-asp-net-mvc-3-razor/

Как сказал @archil. Вы можете написать свой собственный шаблон объекта, но важно то, что он, кажется, используется во всех случаях. Даже если у вас есть шаблон для определенного типа, этот шаблон используется в качестве "основного" шаблона.

Другие вопросы по тегам