Где я могу найти шаблон редактора Object.cshtml по умолчанию?

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

Ответы

Ответ 2

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

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

Ближайшая вещь, которая существует прямо сейчас, - это шаблоны Webforms, которые существуют в 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>
        <% } %>
    <% } %>
<% } %>