Ответ 1
RouteData.Values используется для доступа к значениям/значениям querystring, вставленным маршрутизацией обработки классов.
В вашем случае маршрут, определенный в вашем классе конфигурации маршрута, содержит дополнительные параметры, по которым были бы предоставлены аргументы.
Параметры - это контроллер, действие, идентификатор.
Аргументы этих параметров были бы предоставлены где-то в вашем коде.
Это имеет смысл, когда вы начинаете несколько уровней выше, поэтому вы знаете, что ищете.
-
Global.asax.cs
protected void Application_Start(object sender, EventArgs e) { routingActions.RegisterCustomRoutes(RouteTable.Routes); }
-
Другой класс определяет описанный выше метод:
public void RegisterCustomRoutes(RouteCollection routes) { routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx"); }
-
Следующий код создает гиперссылку. Основное различие заключается в построении HREF. В этом случае "searchdetails" определяется в классе, который содержит мою конфигурацию маршрута.
linkToDetails.HRef = GetRouteUrl("searchdetails", new { orderID = someOrderID, PageIndex = currentPageIndex, PageSize = PageSize });
-
Наконец, целевая страница должна использовать эту информацию, переданную на шаге 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"]); }