2017-09-18 2 views
-2

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) 
{ 
    .... 
} 
+0

S'il vous plaît mettre à jour votre message pour inclure le code source pour le 'whatever' action. – mjwills

+2

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 –

+0

@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. –

Répondre