簡體   English   中英

什么是Routedata.Values [“”]?

[英]What is Routedata.Values[“”]?

我很驚訝地發現沒有任何文章能夠回答這個問題。 我有幾個與RouteData.Values[""]相關的問題。

我看到了這段代碼:

public ActionResult Index()
{
    ViewBag.Message = string.Format("{0}---{1}--{2}",
        RouteData.Values["Controller"],
        RouteData.Values["action"],
        RouteData.Values["id"]);

    return View();
}

這里基本上是讀取可能聽起來像控制器的“元數據”的值。 或者View也可以傳遞給Controller?

RouteData.Values用於訪問由處理路由的類插入的值/查詢字符串值。
在您的情況下,路由配置類中定義的路由具有將提供參數的其他參數。
參數是controller,action,id。
這些參數的參數將在代碼中的某處提供。

當你開始更高級別時更有意義,所以你知道你在尋找什么。

  1. Global.asax.cs

     protected void Application_Start(object sender, EventArgs e) { routingActions.RegisterCustomRoutes(RouteTable.Routes); } 
  2. 另一個類定義了上面的方法:

     public void RegisterCustomRoutes(RouteCollection routes) { routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx"); } 
  3. 以下代碼創建一個超鏈接。 主要區別在於HREF的構建方式。 在這種情況下,“searchdetails”在包含我的路由配置的類中定義。

     linkToDetails.HRef = GetRouteUrl("searchdetails", new { orderID = someOrderID, PageIndex = currentPageIndex, PageSize = PageSize }); 
  4. 最后,目標頁面需要使用在步驟3中傳遞的信息。這是我們使用RouteData.Values [“”]的地方

     protected void Page_Load(object sender, EventArgs e) { var _orderid = Page.RouteData.Values["orderID"].ToString(); var _PageIndex = Convert.ToInt32(Page.RouteData.Values["PageIndex"]); var _PageSize = Convert.ToInt32(Page.RouteData.Values["PageSize"]); } 

RouteData是基本Controller類的屬性,因此您可以在任何控制器中訪問RouteData。 RouteData包含當前請求的路由信息​​。 您可以使用RouteData獲取控制器,操作或參數信息,如下所示。

請注意,您需要轉換為適當的數據類型或使用隱式類型變量var。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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