ASP.NET MVC de routage avec un paramètre obligatoire et un paramètre facultatif?
J'ai travaillé sur un grand MVC de l'application au cours du dernier mois ou deux, mais c'est la première fois que j'ai jamais nécessaire de définir un itinéraire personnalisé gestionnaire, et je suis en cours d'exécution dans certains problèmes. Fondamentalement, j'ai deux paramètres à passer. Le premier est requis, et le second est facultatif.
Je suis après cette réponse ici.
Voici mon itinéraire personnalisé:
routes.MapRoute(
"MyRoute",
"{controller}/{action}/{param1}/{param2}",
new {
controller = "MyController",
action = "MyAction",
param1 = "",
param2 = "" //I have also tried "UrlParameter.Optional" here.
}
);
Et mon action de la signature de la méthode:
public ActionResult MyAction(string param1, string param2)
Si j'essaie de l'URL http://[myserver]/MyController/MyAction/Test1/Test2
puis il travaille comme je l'ai prévu, avec param1 = "Test1" et param2 = "Test2"
Si j'essaie de l'URL http://[myserver]/MyController/MyAction/Test1
puis les deux paramètres sont nuls.
Espérons que quelqu'un peut me dire ce que je fais mal ici, parce que je suis perdu.
OriginalL'auteur jebar8 | 2012-10-05
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez créé de nouveaux parcours et à gauche par défaut, qui est très semblable à la vôtre. Vous devez être conscient que la collection des itinéraires de traversée pour trouver la première itinéraire correspondant. Donc, si vous avez laissé celui par défaut:
au-dessus de votre parcours, il correspondra à la demande de
http://[myserver]/My/MyAction/Test1
et appelMyController.MyAction
"Texte1" paramètre nomméid
. Qui va échouer, car cette action est de ne pas déclarer un nomméid
.Ce que vous devez faire est de déplacer votre parcours en tant que premier dans la liste des routes et de la rendre plus spécifique, alors il est maintenant:
Cela va forcer tout le trafic acheminé creux
My
à la hauteur de cette route.My/MyAction/param1/param2
j'ai une erreur 404. Ce que je fais mal?OriginalL'auteur Rafal
salut vous créer votre déroute comme cela, je pense que ce sera hep vous
OriginalL'auteur Rajpurohit
Essayer cette
vous pouvez spécifier un paramètre comme option à l'aide de "UrlParameter.En option" et précisé lors d'un second Type de données signifie que si vous passez entier valeur de Type de données (@"\d+") et pour la chaîne que j'ai mentionné ci-dessus.
REMARQUE: Séquence de paramètre est très important paramètre Optionnel doit passer à la dernière et enregistrer votre nouvel itinéraire Avant de la Route par Défaut Dans Gloab.asax.
alors vous lien d'action comme
OU avec un paramètre
À vous de Contrôleur
OriginalL'auteur Shivkumar