routeconfig route net mvc examples asp c# asp.net-mvc asp.net-mvc-routing

c# - route - ASP.NET MVC-Extrae el parámetro de una URL



route controller c# (6)

Escribí este método:

private string GetUrlParameter(HttpRequestBase request, string parName) { string result = string.Empty; var urlParameters = HttpUtility.ParseQueryString(request.Url.Query); if (urlParameters.AllKeys.Contains(parName)) { result = urlParameters.Get(parName); } return result; }

Y lo llamo así:

string fooBar = GetUrlParameter(Request, "FooBar"); if (!string.IsNullOrEmpty(fooBar)) { }

Estoy tratando de extraer los parámetros de mi URL, algo como esto.

/ Administración / Cliente / Editar / 1

extracto: 1

/ Administración / Producto / Editar / 18? Allowed = true

extracto: 18? allowed = true

/ Administración / Producto / Crear? Allowed = true

extracto :? allowed = true

Alguien puede ayudar? ¡Gracias!


No estoy familiarizado con ASP.NET, pero supongo que podría usar una función dividida para dividirla en una matriz usando el delimitador / como, luego tomar el último elemento de la matriz (generalmente la longitud de la matriz -1) para obtener el extracto usted quiere.

Ok, esto no parece funcionar para todos los ejemplos.

¿Qué tal una expresión regular?

.*(/|[a-zA-Z]+/?)(.*)

luego obtengo esa última subexpresión (.*) , creo que es $+ en .Net, no estoy seguro


Para obtener valores de sus parámetros, puede usar RouteData.

Más contexto sería bueno. ¿Por qué necesitas ''extraerlos'' en primer lugar? Debería tener una Acción como: public ActionResult Edit(int id, bool allowed) {}


Puede obtener esta lista de parámetros en el objeto ControllerContext.RoutValues ​​como par clave-valor.

Puede almacenarlo en alguna variable y hacer uso de esa variable en su lógica.


Actualizar

RouteData.Values["id"] + Request.Url.Query

Coincidirá con todos sus ejemplos

No está del todo claro lo que estás tratando de lograr. MVC le pasa parámetros de URL a través del enlace del modelo.

public class CustomerController : Controller { public ActionResult Edit(int id) { int customerId = id //the id in the URL return View(); } } public class ProductController : Controller { public ActionResult Edit(int id, bool allowed) { int productId = id; // the id in the URL bool isAllowed = allowed // the ?allowed=true in the URL return View(); } }

Agregar una asignación de ruta a su archivo global.asax.cs antes de que el valor predeterminado maneje la / administration / part. O tal vez quiera mirar áreas de MVC.

routes.MapRoute( "Admin", // Route name "Administration/{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

Si se trata de los datos de URL sin formato que está buscando, puede usar una de las diversas propiedades de URL y Solicitud disponibles en la acción de su controlador

string url = Request.RawUrl; string query= Request.Url.Query; string isAllowed= Request.QueryString["allowed"];

Parece que Request.Url.PathAndQuery podría ser lo que quieres.

Si desea acceder a los datos publicados sin procesar, puede usar

string isAllowed = Request.Params["allowed"]; string id = RouteData.Values["id"];


public ActionResult Index(int id,string value)

Esta función obtiene valores de URL Después de eso, puede usar la función siguiente

Request.RawUrl - Devuelve la URL completa de la página actual

RouteData.Values - Return Collection of Values ​​of URL

Request.Params - Return Name Value Collections