2014-09-01 2 views

답변

1

Umbraco 템플릿은 ~/View 폴더에 있습니다. 그들이 다른 곳에 살면 백 오피스에서 툴링 지원을 잃어 버리게됩니다 (그리고 프로젝트를 픽업하는 다른 Umbraco 개발자를 혼란스럽게합니다!).

그러나 폴더 이름이 문서 유형의 이름과 일치하면 각 문서 유형에 대한 컨트롤러를 만들 수 있습니다 (즉, 라우팅 하이재킹). 이것은 Umbraco가 하위 폴더를 체크인 할 수있게 해 줄 것입니다. 나는 싱글 코어 Umbraco (7)와 다중 사이트를하고 있어요

+0

는 아래 /보기/MyController에의 /를 surfacecontroller에 대해 확실히한다. RenderMvcController – dampee

+0

에 대한 확신이 없으므로 멀티 사이트 구현을위한 솔루션은 무엇입니까? 동일한 Umbraco 프로젝트에서 10 개의 사이트를 수행해야한다고 할 수 있습니까? – alex

+0

Phew, 음 ... 여기에 설명 된 경로를 무시할 수 있습니다. http://shazwazza.com/post/Custom-MVC-routing-in-Umbraco. 그러나 먼저 하이브리드 프레임 워크와 같은 오버 - 아치 (over-arching) 방식을 고려해야합니다. 대량의 많은 작업을 수행하기 위해 자체 기본 컨트롤러를 구현하십시오. 개인적으로, 피할 수없는 경우 사이트 당 컨트롤러를 접두어로 사용하고 사이트에서 기능을 복제해야하는 기본 컨트롤러를 상속받습니다. – Digbyswift

1

는 여기이 순간에 있음을 처리하고있어 방법은 다음과 같습니다

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Web; 
using System.Web.Mvc; 
using Umbraco.Core; 
using Umbraco.Web.Mvc; 
using Umbraco.Core.Logging; 

namespace MyApp.UmbracoExtensions.Shared.Events 
{ 
    public class RegisterCustomViewEngine : ApplicationEventHandler 
    { 
     protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) 
     { 
      ViewEngines.Engines.Add(new CustomViewEngine()); 

      base.ApplicationStarting(umbracoApplication, applicationContext); 
     } 
    } 

    public class CustomViewEngine : RazorViewEngine 
    { 
     private static string[] NewViewFormats = new[] { 
      "~/Views/SomeFolder/{0}.cshtml", 
      "~/Views/AnotherFolder/{0}.cshtml", 
      "~/Views/Wiki/{0}.cshtml" 
     }; 

     public CustomViewEngine() 
     { 
      base.ViewLocationFormats = base.ViewLocationFormats.Union(NewViewFormats).ToArray(); 
     } 
    } 
}