Asp.net mvc 3 在哪里可以找到默认的Object.cshtml编辑器模板?

Asp.net mvc 3 在哪里可以找到默认的Object.cshtml编辑器模板?,asp.net-mvc-3,razor,scaffolding,Asp.net Mvc 3,Razor,Scaffolding,我需要修改脚手架的默认编辑器模板,但我还没有找到Object.cshtml模板,在哪里可以找到默认的razor Object.cshtml编辑器模板?以下博客文章介绍了如何自定义编辑器模板: 基本上,您必须添加一个名为Views\Shared\EditorTemplates\Object.cshtml的文件,并将显示该对象的所有逻辑放在那里。当@marcind说它们是编译的时候,模板本身不是嵌入的,而是用代码编写的。例如,EditorFor调用TemplateFor,可以调用TextAreaEx

我需要修改脚手架的默认编辑器模板,但我还没有找到Object.cshtml模板,在哪里可以找到默认的razor Object.cshtml编辑器模板?

以下博客文章介绍了如何自定义编辑器模板:


基本上,您必须添加一个名为
Views\Shared\EditorTemplates\Object.cshtml
的文件,并将显示该对象的所有逻辑放在那里。

当@marcind说它们是编译的时候,模板本身不是嵌入的,而是用代码编写的。例如,
EditorFor
调用
TemplateFor
,可以调用
TextAreaExtensions.TextArea
或生成最终输出代码的许多其他扩展之一。这可能是因为我们可以选择删除默认的视图引擎并使用类似的东西

模板名称和创建结果输出的函数之间的映射可以在
System.Web.Mvc.Html.TemplateHelpers
中看到。另请参见
System.Web.Mvc.Html.DefaultEditorTemplates

目前存在的最接近的东西是Mvc3Futures中的Webforms模板,这些模板可在上获得。其中存在包含模板的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>
        <% } %>
    <% } %>
<% } %>

bool ShouldShow(模型元数据){
return metadata.ShowForEdit
&&metadata.ModelType!=typeof(System.Data.EntityState)
&&!metadata.IsComplexType
&&!ViewData.TemplateInfo.Visited(元数据);
}
1) { %>
ShouldShow(pm)){%>

我正在寻找原始模板,因此我可以修改我需要更改的内容,而不是从头开始编写,无论如何,我想我只需要使用aspx one并将其转换为razor。“原始”模板实际上是在System.Web.Mvc.dll中硬编码的,因此没有asxc或cshtml文件可供查看。使这些默认模板更可用是Mvc 4列表中的一部分,尽管我不能保证任何事情。