2011-02-11 3 views

답변

8

다음 블로그 게시물 편집기 템플릿을 사용자 지정하는 방법에 대해 설명합니다 : http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

은 기본적으로 당신이 Views\Shared\EditorTemplates\Object.cshtml라는 이름의 파일을 추가하고이 객체를 표시하기위한 모든 로직을 넣어해야합니다.

+0

내가 원래 템플릿을 찾고 있어요, 그래서 난 그냥 내가 처음부터 그것을 작성하는 대신 변경해야 무엇을 수정할 수 있습니다

다음은 Object.ascx 템플릿입니다 aspx 하나를 사용하여 면도칼로 변환하십시오. – ryudice

+7

"원본"템플릿은 실제로 System.Web.Mvc.dll에 하드 코딩되어 있으므로 사용자가 볼 수있는 asxc 또는 cshtml 파일이 없습니다. 이러한 기본 템플릿을 더 많이 사용 가능하게 만드는 것은 MVC 4에 대한 목록에 있습니다.하지만 아무 것도 약속 할 수는 없습니다. – marcind

4

@marcind가 컴파일 될 때 템플릿 자체는 삽입되지 않고 코드로 작성됩니다. 예를 들어, EditorForTextAreaExtensions.TextArea 또는 궁극적으로 출력되는 코드를 생성하는 다른 많은 확장 프로그램 중 하나를 호출 할 수있는 TemplateFor을 호출합니다. 이는 기본 뷰 엔진을 제거하고 nhaml과 같은 것을 사용할 수있는 옵션이 있기 때문일 수 있습니다.

템플릿 이름과 결과 출력을 만드는 함수 간의 매핑은 System.Web.Mvc.Html.TemplateHelpers에서 볼 수 있습니다. System.Web.Mvc.Html.DefaultEditorTemplates도 참조하십시오.

현재 가장 가까운 것은 aspnet.codeplex.com website에서 사용할 수있는 Mvc3Futures에있는 Webforms 템플릿입니다. 그 안에 템플릿이 들어있는 DefaultTemplates \ EditorTemplates 폴더가 있습니다. 어쨌든 난 그냥 거 같아요

<%@ 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> 
     <% } %> 
    <% } %> 
<% } %> 
관련 문제