ASP.NET MVC 中的路由:动态路径

问题描述 投票:0回答:1
我正在尝试创建一个新操作来侦听路由具有特定模式的任何请求 - 其中

slug

 是内容路径的其余部分(托管在正在运行的应用程序外部 - 该路由将代理请求服务器端)。

我尝试向操作添加属性,并尝试在

RouteConfig

 中创建路线。

每当我请求真实内容路径时;比如

{domain}/gb/en/content/assets/head/icons/icon.png
我得到了 404;如果我转到 

/slug

,我就会点击操作方法。

[Route("{country}/{language}/content/{*slug?}")] public ActionResult Content(string slug = null) { // ... do something }

routes.MapRoute( "Content", "{country}/{language}/content/{*slug?}", new { controller = "Cloud", action = "Content", slug = UrlParameter.Optional } );
    
c# asp.net-mvc
1个回答
0
投票

Route

 属性与正则表达式一起使用,如下所示:

[Route("{country}/{language}/content/{slug:regex(.*slug)?}")] public new ActionResult Content(string slug = null) { ... }
另外,使用 

routes.MapMvcAttributeRoutes();

 属性时,需要在 
RegisterRoutes()
 中调用 
Route
 

public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
    
© www.soinside.com 2019 - 2024. All rights reserved.