2014-11-27 4 views
1

하이브리드 MVC/Webforms 프로젝트를 상속 받았으며, MVC 부분은 MVCSiteMapProvider를 사용하여 메뉴를 만들고 WebForm 부분은 사용자 정의 빌드 메뉴 생성 도구를 사용합니다.MVCSiteMapProvider with Webform

사용자 지정 MVCSiteMapProvider 노드를 만들었으므로 전체 MVCSiteMapProvider를이 프로젝트의 웹 폼 부분에 사용하도록 이식하려고합니다. 이것이 가능합니까? 누구든지 webform 코드에 쐐기/해킹을위한 전략을 제안 할 수 있습니까?

감사 앤디

답변

0

이론에서 우리는 웹폼과의 상호 운용성을 작업해야하지만, 내 지식에 시도 또는 테스트되지 않았습니다. 그러나 설정에 문제가 없다면 나는 그것에 대해 들어 본 적이 없을 것입니다.

을 설정하려면 :

  • 는 ASP.NET 및 MvcSiteMapProvider 사이에 공유되는 단일 XML 파일을 추가하고 거기에 당신의 모든 노드를 구성합니다. NuGet 패키지에 의해 설치된 Mvc.sitemap 파일에서 네임 스페이스 선언을 사용해야합니다. MvcSiteMapProvider 특성은 안전하게 추가 할 수 있으며 XmlSiteMapProvider에 의해 사용자 지정 특성처럼 취급되며 (본질적으로 무시됩니다) 유의하십시오. 가능 웹폼과 MVC를 탐색 할 수 있도록하려면 대신
  • 웹 양식은 메뉴와에 SiteMapPath를 표시하는 데 사용 컨트롤의 XmlSiteMapProvider 모두를 사용하는 것 등 controller, action를 구성하는 url 속성을 사용해야합니다. 기본적으로 MSDN 설명서를 가이드로 사용하는 일반적인 ASP.NET 웹 사이트처럼 설정하십시오.
  • MVC는 MvcSiteMapProvider 및 HTML 도우미를 사용하여 유사한 기능을 표시합니다. HTML 도우미를 사용자 정의하거나 요구 사항을 충족하는 데 필요한 경우 직접 HTML 도우미를 작성할 수 있습니다.
  • 보안 트리밍의 경우 WebForms에는 xmlRolesAttribute을 사용하고 MVC에는 AuthorizeAttribute를 사용할 수 있습니다.
  • 현지화는 거의 MSDN documentation을 따라갈 수 있습니다.

기본적으로 기본 ASP.NET Sitemap 공급자의 모든 기능이므로 가시성 공급자, 동적 노드 공급자 또는 작업 할 때 MvcSiteMapProvider의 다른 고급 기능 중 일부에 액세스 할 수 없습니다 WebForms 내에서 이러한 세부 사항을 처리 할 수있는 System.Web.SiteMapProvider을 직접 빌드하지 않는 한.

HTML 도우미가 다시 게시되지 않으므로 웹 양식에서 just writing the output of the Menu and SiteMapPath HTML helpers을 사용할 수 있습니다. HTML 도우미가 템플릿으로되어 있기 때문에 의심 스럽지만 실제로는 MVC보기에서만 작동합니다. . WebForms에서 호출 할 수있는 확장 메서드이기 때문에 HTML을 출력하거나 ASP.NET 컨트롤을 출력하는 자체 HTML 도우미를 작성할 수도 있습니다.

new issue @ GitHub를 열어 피드백을 보내주십시오.

+0

도움을 주셔서 감사합니다. 어떻게 진행되는지 알려 드리겠습니다.MVSiteMapProvider를 사용하여 MVCSiteMapProvider를 사용하여 XMLSiteMapProvider와 함께 작동하지 않는 CustomNodeProviders 및 동적 노드를 사용했습니다. 어떻게되는지 알려 드리겠습니다. –

+0

웹 양식 페이지에서 .Menu 용 HtmlHelper를 어떻게 사용합니까? .Menu HTML 도우미에서 출력 된 HTML을 캡처하여 웹 양식 마스터 페이지에 덤프하여 메뉴 생성을위한 통일 ​​된 방법을 만들 수 있습니다. (웹 폼에서 멀리 이동) – Matt

+0

[이 질문에 대한 답변] (http://stackoverflow.com/questions/15173272/html-helpers-in-webform). 그것은 기본적으로 원리를 설명합니다. 그러나 MVC 규칙에 따라 * 템플릿이 적용된 HTML 도우미이므로이 방법을 사용하면'MvcSiteMapProvider' 메뉴가 작동하지 않습니다. 그러나 HTML을 작성하는 [자신의 HTML 도우미 만들기] (http://www.asp.net/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs) 템플리트에 의존하기보다 안쪽에. – NightOwl888

0

두 가지 다른 사이트 맵 파일을 사용할 수 있습니다. 웹 양식 용 XMLSiteMapProvider와 MVCSiteMapProvider가있는 MVS Portion Mvc.Sitemap을위한 web.sitemap. webforms의 경우 Mvc.SiteMap에서 action 및 controller 대신 url을 지정하십시오. 현재이 하이브리드 프로젝트에서 이것을 사용하고 있으며 잘 작동합니다.

관련 문제