簡體   English   中英

ASP.net MVC 2路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM