Подтвердить что ты не робот

Что такое 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 также может перейти к контроллеру?

4b9b3361

Ответ 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"]);
    }