Где я могу найти шаблон редактора Object.cshtml по умолчанию? - PullRequest
14 голосов
/ 11 февраля 2011

Мне нужно изменить шаблон редактора по умолчанию для строительных лесов, но я не нашел шаблон Object.cshtml, где я могу найти бритву Шаблон редактора Object.cshtml по умолчанию?

Ответы [ 2 ]

8 голосов
/ 11 февраля 2011

Следующий пост в блоге описывает, как настроить шаблоны редактора: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

По сути, вы должны добавить файл с именем Views\Shared\EditorTemplates\Object.cshtml и поместить туда всю логику для отображения объекта.

6 голосов
/ 12 ноября 2011

Когда @marcind говорит, что они скомпилированы, сами шаблоны не внедряются, а пишутся в коде.Например, EditorFor вызывает TemplateFor, который может вызывать TextAreaExtensions.TextArea или одно из многих других расширений, которые генерируют код, который в конечном итоге выводится.Это может быть связано с тем, что у нас есть возможность удалить движок представления по умолчанию и использовать что-то вроде nhaml .

Отображение между именами шаблонов и функцией, создающей результирующий вывод, можно увидеть в System.Web.Mvc.Html.TemplateHelpers.См. Также System.Web.Mvc.Html.DefaultEditorTemplates.

. Ближайшая вещь, которая существует прямо сейчас, - это шаблоны веб-форм, существующие в Mvc3Futures, которые доступны на веб-сайте aspnet.codeplex.com .В ней есть папка DefaultTemplates \ EditorTemplates, которая содержит шаблоны.

Вот шаблон Object.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script runat="server">
    bool ShouldShow(ModelMetadata metadata) {
        return metadata.ShowForEdit
            && metadata.ModelType != typeof(System.Data.EntityState)
            && !metadata.IsComplexType
            && !ViewData.TemplateInfo.Visited(metadata);
    }
</script>
<% if (ViewData.TemplateInfo.TemplateDepth > 1) { %>
    <% if (Model == null) { %>
        <%= ViewData.ModelMetadata.NullDisplayText %>
    <% } else { %>
        <%= ViewData.ModelMetadata.SimpleDisplayText %>
    <% } %>
<% } else { %>    
    <% foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm))) { %>
        <% if (prop.HideSurroundingHtml) { %>
            <%= Html.Editor(prop.PropertyName) %>
        <% } else { %>
            <% if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString())) { %>
                <div class="editor-label"><%= Html.Label(prop.PropertyName) %></div>
            <% } %>
            <div class="editor-field"><%= Html.Editor(prop.PropertyName) %> <%= Html.ValidationMessage(prop.PropertyName, "*") %></div>
        <% } %>
    <% } %>
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...