[英]ASP.net mvc 2 routing
class HomeController
{
public ActionResult Search(int[] sections, int categories)
{
return View();
}
}
我需要像這樣的網址
website.com/search/1,2,3/5
我應該使用什么路線圖?
目前RegisterRoutes看起來
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
使用類似:
var ints = new int[] {1, 2, 3, 4, 5};
var result = string.Join(“,”,ints.Select(x => x.ToString())。ToArray());
生成逗號分隔的字符串,並將其傳遞到“ Search / {csv} / {somevalue}”路由中
我將更改控制器定義以處理數組:
public ActionResult Search(string sections, int categories)
{
// sectionsArray is int[].
var sectionsArray = sections.Split(',').Select(x => int.Parse(x)).ToArray();
return View();
}
那么您可以照常定義路由: Home/{sections}/{categories}
:
routes.MapRoute(
"Search", // Route name
"{Home}/{sections}/{categories}", // URL with parameters
new { controller = "Home", action = "Search" } // Parameter defaults
);
請注意,您必須將此添加到默認值的頂部。
由於您可能仍將默認路徑與控制器/操作組合一起使用,因此建議您執行以下操作:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Search",
"search/{sections}/{section}", // rename these variables to what they actually are
new { controller = "Search", action = "Sections", sections = UrlParameter.Optional, section = UrlParameter.Optinal }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
但是由於很難在這里說出您要滿足的要求,因此也許您正在嘗試使用包羅萬象的路由參數,而不是在URL請求末尾使用。 如果是這種情況,您可以在此類Route類的博客文章中檢查我的代碼,該類允許在URL中的任何位置捕獲全部部分,而不僅僅是默認情況下的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.