2013-03-14 5 views
1

asp.net Hot Towel SPA 응용 프로그램이 있고 .html과 .cshtml 페이지를 모두 사용하고 싶습니다.여러 개의 viewEngine.viewExtension을 가질 수 있습니까?

은 가능한 여러 viewExtensions을 추가하는 것입니다, 여러 viewExtensions을 설정할 수 없습니다 처음부터 있도록

viewEngine.viewExtension = '.cshtml'; 
viewEngine.viewExtension = '.html'; 

답변

3

viewExtension는 배열이 아니다. 물론 이것은 단지 자바 스크립트 일 뿐이므로 원본 Durandal 앱 폴더에서 viewEngine.js를 변경할 수 있습니다 (링크는 https://github.com/BlueSpire/Durandal/blob/master/App/durandal/viewEngine.js).

즉, 클라이언트가 * .cshtml 파일을 가져 오면 면도기 구문은 사용자가 생각하는 방식으로 렌더링되지 않습니다. 서버가 * .cshtml 뷰를 제공하면 클라이언트에 침을 뱉기 전에 렌더링됩니다. 최선의 방법은 Durandal을 사용하여 동적 뷰 렌더링을 찾고있는 경우 viewEngine에서 viewEngine의 하나 또는 두 개의 함수를 재정의하는 것입니다. viewEngine.convertViewIdToRequirePath (viewId) : string 및 viewEngine.createView (viewId) : promise를 더욱 제어 할 수 있습니다.

1

Routing and Leveraging Dynamic Content in DurandalJS이 요점에서보세요 : 비슷한 문제에 대한 https://gist.github.com/irium/5191764

그건 내 자신의 솔루션

더 많은 정보를 원하시면,이 링크를 확인하십시오. Durandal의 viewEngineviewLocator에 대한 맞춤 설정입니다. shell 모듈에서이 모듈을 가져오고 customizeViewEngine()customizeViewLocator() 함수를 모두 실행하십시오. 그 후 확장자가 .html 인 뷰는 이전처럼 처리되지만 .cshtml 뷰가 원격 서버에 요청됩니다. 그러나 Durandal의 캐싱보기로 인해이 작업은 한 번만 수행됩니다. 같은 뷰의 모든 후속 요청은 클라이언트 측에서 캐시 된 버전을 사용합니다. 이것은 RequireJS에서보기 모듈을 수동으로 등록 해제하여 변경할 수 있지만 이것은 내 요구 범위를 벗어났습니다.

이것은 JavaScript로 컴파일 된 CoffeScript 코드이지만 아이디어를 얻고 코드가 도움이 되었기를 바랍니다.

관련 문제