为了支持请求 url 中可变数量的 url 参数值,您可以*
在路由定义中使用前缀标记您的方法参数。
使用 MVC 属性路由,
[Route("explorer/root/{*levels}")]
public ActionResult Details(string levels = "")
{
if (String.IsNullOrEmpty(levels))
{
//request for root
}
else
{
var levelArray = levels.Split('/');
//check level array and decide what to do
}
return Content("Make sure to return something valid :) ");
}
最后一个带有前缀的参数*
就像一个包罗万象的参数,它将在之后将任何内容存储在 url 中explorer/root
因此,当您请求时yoursite.com/explorer/root/a/b/c/d
,默认模型绑定器会将值映射"a/b/c/d"
到levels
参数。您可以调用该Split
字符串上的方法来获取 url 段数组。
要启用属性路由,请转到RouteConfig.cs
并调用MapMvcAttributeRoutes()
.RegisterRoutes
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 }
);
}