2017-01-10 6 views
3

MVC 애플리케이션에 Admin/Vendor과 같은 경로가 있습니다. 이 경로를 변경하지 않고 동일한 방법으로 다른 방법을 가리켜 야합니다. CustomAdmin/CustomVendor.플러그인에서 경로를 재정의하는 방법 nopcommerce

속성 라우팅을 시도했지만 운이 없었습니다. 이것을 할 수있는 방법이 있습니까? 내 현재 코드가

기존 방법 아래와 같습니다 :

public class AdminController 
{ 
    public ActionResult Vendor() 
    { 
     return View(); 
    } 
} 

사용자 정의 방법 :

public class CustomAdminController 
{ 
    [Route("Admin/Vendor")] 
    public ActionResult CustomVendor() 
    { 
     return View(); 
    } 
} 
+0

플러그인의 경로를 무시 하시겠습니까? –

+0

@Div 옙 내 플러그인에서 오버라이드해야한다 – Optimus

+0

좋아, 플러그인의 'RouteProvider' 파일을 보여줄 수 있겠습니까! –

답변

2

플러그인을 개발하면서. 맞춤 경로를 RouteProvider에 추가해야합니다.

기본적으로 nopCommerce AdminControllerVendor은 존재하지 않으므로 관리자 목록 방식을 재정의하려고한다고 가정합니다.

public partial class RouteProvider : IRouteProvider 
{ 
    public void RegisterRoutes(RouteCollection routes) 
    { 
     var route = routes.MapRoute("Plugin.GroupName.PluginName.CustomVendor", 
            "Admin/Vendor/List", 
             new { controller = "CustomAdminController", action = "CustomVendor", orderIds = UrlParameter.Optional, area = "Admin" }, 
             new[] { "Nop.Plugin.GroupName.PluginName.Controllers" }); 
     route.DataTokens.Add("area", "admin"); 
     routes.Remove(route); 
     routes.Insert(0, route); 
    } 
    public int Priority 
    { 
     get 
     { 
      return 100; // route priority 
     } 
    } 
} 

사이드 참고 :

enter image description here

처럼 보이는

GroupNamePluginName는 플러그인 그룹 이름 및 플러그인 이름이어야합니다.

희망이 도움이됩니다.

1

을 클래스가 인터페이스 IRouteProvider를 구현하는 플러그인에, 당신은 쉽게 거기에 경로를 재정의 할 수 있습니다. 는 마찬가지로 나는 내 플러그인에서 RouteProvider라는 이름의 클래스가, 그래서 abstract 기능 RegisterRoutes를 구현하고 단순히 SaveGeneralSettings 또는 물건을 사용 directory.And 플러그인으로 대체해야

다음 Plugin.Promotion.Combo
routes.MapRoute("Plugin.Promotion.Combo.SaveGeneralSettings", 
       "Admin/Vendor", 
       new { controller = "CustomAdmin", action = "CustomVendor", }, 
       new[] { "Nop.Plugin.Promotion.Combo.Controllers" } 
      ); 

에 의해 오버라이드 할 수있다 당신은 당신의 경로 URL이 될 것입니다.

+0

이 코드를 시도했지만 작동하지 않습니다 – Optimus

+0

'RegisterRoutes (RouteCollection routes)'함수 안에 코드 부분을 작성 했습니까 ?? – gdmanandamohon

+0

예. 여전히 오래된 컨트롤러 액션으로 라우팅하십시오. – Optimus