2014-05-22 2 views
3

TopicsDetails.cshtml 페이지를 덮어 쓰는 플러그인을 만들려고합니다.Plugin nopCommerce 3.3에서 GenericPathRoute.cs를 재정 의하여 URL 라우팅을 변경하십시오.

 routes.MapRoute("Nop.Plugin.Other.CustomTopic.ViewCustomTopic", "{SeName}", 
         new { controller = "CustomTopic", action = "TopicDetails", SeName = UrlParameter.Optional }, 
         new[] { "Nop.Plugin.Other.CustomTopic.Controllers" }); 

이 내 모든 CustomTopicController .Even에 {SeName} 제품의 SeName을 받고있다 :이 같은 경로를 추가했다.

내가 대신 오래된 하나이를 추가하는 경우 : 우리가 GenericPathRoutes.cs 그 정수를 제공 것을 알고있는에 topicDetails (INT 해당 itemId는) 조치 제공되지 않는 정수를 받기 때문에

 routes.MapRoute("Nop.Plugin.Other.CustomTopic.ViewCustomTopic", 
         new { controller = "CustomTopic", action = "TopicDetails" }, 
         new[] { "Nop.Plugin.Other.CustomTopic.Controllers" }); 

오류가 발생합니다 .

GenericPathRoutes.cs 규칙을 재정의하여 SeName 항목 만 내 컨트롤러에 충돌하거나 다른 종류의 작업을 수행 할 수 있거나 심지어 그렇게 할 수 있습니까?

+0

당신이 원하는 것이 무엇인지 분명하지 않습니다. 문장이나 2 문장으로 원하는 것을 원하십니까? –

+0

는 nopCommerce 3.3 – Sujit

답변

0

나는 늘 내가 방법을 보여주는 기사를 쓴 최근 그 오류

+0

에 플러그인하여 TopicDetails.cshtml 페이지를 대체하려는 시도는 실제로 nopcommerce 3.3의 기본 경로는 같다 : 'routes.MapLocalizedRoute ("주제", "{SeName}", 새로운 {컨트롤러 = " New Topic ", action ="TopicDetails "}, new [] {"Nop.Web.Controllers "}); ' 오류가 발생합니다. TopicDetails (int topicid) 메서드는 정수를 허용하므로 Nop.Web.Framework.Seo.GenericPathRoute.cs에 정수 (topicid)가 생성되기 때문에 기본적으로 오류가 없습니다. 이제 어떻게 내 GenericPathRoute.cs 플러그인을 무시할 수 있습니까 ?? – Sujit

1

을 던져 = UrlParameter.Optional 여기에 어떤 id 매개 변수는 선택 사항입니다 당신이 ID를 추가하여 시도 할 수 있습니다 내가 당신의 질문을 이해 여부를 확실하지 않다 로컬 라이즈 된 라우트를 오버라이드하고 TopicDetails 뷰를 예제로 사용했습니다. 기사는 here입니다. 단거리, 경로 제공 업체는 다음과 같습니다.

public class RouteProvider : IRouteProvider 
{ 
    private const string NAMESPACES = "Nop.Plugin.Misc.Custom.Controllers"; 
    private const string CONTROLLER = "MiscCustom"; 

    public void RegisterRoutes(RouteCollection routes) 
    {  
     //Public Override 
     routes.MapGenericPathRoute("Plugin.Misc.Custom.GenericUrl", 
      "{generic_se_name}", 
      new { controller = "Common", action = "GenericUrl" }, 
      new[] { NAMESPACES }); 

    } 

    public int Priority 
    { 
     get { return Int32.Max; } 
    } 
} 
+1

이것은 매력처럼 작동합니다. 샘플 플러그인과 관련된 내용을 물어볼 수 있습니까? 이 기사에서는 우선 순위를 -1로 정의하지만 소스 코드를 다운로드 할 때 int.max를 사용합니까? 어느 것이 더 낫습니까? 나는 그것이 기본 컨트롤러를 오버라이드하기 위해서 0 이상이어야한다고 생각했다. 감사 – batmaci

관련 문제