route net mvc custom attribute asp c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing routedata

net - route controller c#



¿Qué es Routedata.Values ​​[""]? (1)

RouteData.Values ​​se usa para acceder a los valores / valores de cadena de consulta insertados por las clases que manejan el enrutamiento.
En su caso, la ruta definida en su clase de configuración de ruta tiene parámetros adicionales a los cuales se les han proporcionado argumentos.
Los parámetros son controlador, acción, id.
Los argumentos para estos parámetros se habrían proporcionado en algún lugar de su código.

Tiene más sentido cuando comienzas unos niveles más altos, para que sepas lo que estás buscando.

  1. The Global.asax.cs

    protected void Application_Start(object sender, EventArgs e) { routingActions.RegisterCustomRoutes(RouteTable.Routes); }

  2. Otra clase define el método anterior:

    public void RegisterCustomRoutes(RouteCollection routes) { routes.MapPageRoute("searchdetails", "searchdetails/{orderID}/{PageIndex}/{PageSize}", "~/View/SearchDetails.aspx"); }

  3. El siguiente código crea un hipervínculo. La principal diferencia es la forma en que se construye el HREF. En este caso, los "detalles de búsqueda" se definen en la clase que contiene mi configuración de ruta.

    linkToDetails.HRef = GetRouteUrl("searchdetails", new { orderID = someOrderID, PageIndex = currentPageIndex, PageSize = PageSize });

  4. Finalmente, la página de destino debe usar esta información pasada en el paso 3. Aquí es donde usamos 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"]); }

Me sorprende ver que no hay ningún artículo que responda esta pregunta con ningún detalle. Tengo algunas preguntas relacionadas con RouteData.Values[""] .

Vi este código:

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

Aquí está básicamente leyendo valores que potencialmente suenan como "metadatos" del controlador. ¿O es algo que View también puede pasarle a Controller?