J'essaie d'extraire les paramètres de mon URL, quelque chose comme ça.
/ Administration/Client/Éditer/1
/ Administration/Produit/Éditer/18? Allowed = true
/ Administration/Produit/Créer? Allowed = true
Quelqu'un peut aider? Merci!
Mettre à jour
RouteData.Values["id"] + Request.Url.Query
Correspondra à tous vos exemples
Ce que vous essayez de réaliser n’est pas tout à fait clair. MVC transmet les paramètres d'URL pour vous via la liaison de modèle.
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();
}
}
L'ajout d'un mappage de route à votre fichier global.asax.cs avant celui par défaut gérera le dossier/administration /. Ou vous voudrez peut-être vous pencher sur les zones MVC.
routes.MapRoute(
"Admin", // Route name
"Administration/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
Si vous recherchez les données d'URL brutes, vous pouvez utiliser l'une des propriétés d'URL et de requête disponibles dans l'action de votre contrôleur.
string url = Request.RawUrl;
string query= Request.Url.Query;
string isAllowed= Request.QueryString["allowed"];
Il semble que Request.Url.PathAndQuery
pourrait être ce que vous voulez.
Si vous voulez accéder aux données brutes publiées, vous pouvez utiliser
string isAllowed = Request.Params["allowed"];
string id = RouteData.Values["id"];
public ActionResult Index(int id,string value)
Cette fonction récupère les valeurs sous forme d'URL Après cela, vous pouvez utiliser la fonction ci-dessous.
Request.RawUrl
- Renvoie l'URL complète de la page en cours
RouteData.Values
- Renvoie une collection de valeurs d'URL
Request.Params
- Retourne des collections de valeurs de nom
Vous pouvez obtenir cette liste de paramètres dans l'objet ControllerContext.RoutValues en tant que paire clé-valeur.
Vous pouvez le stocker dans une variable et vous utilisez cette variable dans votre logique.
Pour obtenir les valeurs de vos paramètres, vous pouvez utiliser RouteData.
Plus de contexte serait bien. Pourquoi avez-vous besoin de les "extraire" en premier lieu? Vous devriez avoir une action du genre: public ActionResult Edit(int id, bool allowed) {}
J'ai écrit cette méthode:
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;
}
Et j'appelle ça comme ça:
string fooBar = GetUrlParameter(Request, "FooBar");
if (!string.IsNullOrEmpty(fooBar))
{
}