リクエスト 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 }
);
}