2016-02-03 104 views
0

我定义我的路线像下面MVC自定义路由不工作

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

routes.MapRoute(
    name: "ProductAPI", 
    url: "{productId}/{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    constraints: new { productId= @"\d{15}" } 
); 

和链接与

@Html.ActionLink("PRD List", "GetPrdList", "PrdList", new { productId = @ViewBag.productId}, null) 

上面的链接导致资源无法找到制造。我是路由概念的新手,请帮我解决上述代码中的错误。

我希望我的URL看起来像../ProductID/{controller}/{action}/{id},如果在URL中没有指定ProductID等于,就应该拿起默认网址../{controller }/{行动}/{ID}

+0

你有一个名为'PrdListController'控制器'公共的ActionResult GetPrdList(INT的productId)'? –

+0

是的,我拥有它。 – AKarthik

+0

然后你的链接应该创建'.../PrdList/GetPrdList?productId = someValue',你的方法将被打中。你能确认这是生成的实际网址吗? –

回答

0

也可以尝试在你的WebApiConfig此代码:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "Other", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     );