Il y a beaucoup de questions à ce sujet mais aucune qui clarifie ce scénario spécifique.Comment obtenir un identifiant depuis l'URL sans utiliser "? Id =" dans la configuration de la route?
Je souhaite créer une URL qui n'a rien à voir avec le nom du contrôleur ou de l'action, et je souhaite que la valeur de l'ID y soit directement définie (pas avec "?id="
).
Signification Je veux l'adresse suivante:
http://localhost/word/43
Pour appeler l'action "whatever" dans le contrôleur "Nevermind" avec l'identifiant "43".
dans la configuration de la route, j'ai:
routes.MapRoute(
name: "yes",
url: "word/{id}",
defaults: new { controller = "nevermind", action = "whatever"},
constraints: new { id = @"\d+" }
);
Si j'entre l'URL localhost/word?id=43
il fonctionne très bien, si je saisis l'URL que je veux, ce qui est localhost/word/43
, il ne fonctionne pas, l'identifiant est comme nul .
La méthode du contrôleur est
public ActionResult whatever(int id)
{
....
}
S'il vous plaît mettre à jour votre message pour inclure le code source pour le 'whatever' action. – mjwills
Vous devez montrer la signature de votre méthode de contrôleur - si son 'public ActionResult quel (int id)', et votre itinéraire est avant la route par défaut (ou d'autres routes correspondantes), alors vous codez bien –
@StephenMuecke Il a être avec 'Request.Params', c'est pourquoi il obtient une valeur nulle. Sinon, il aurait eu une exception. Voir ma réponse ci-dessous. –