J'ai un itinéraire défini comme tel:ActionLink avec routeValues crée un style old-skool URL
routes.MapRoute(
"CustomerWithScreenName", // Route name
"Customer/{sn}/{action}", // e.g. Customer/KingKong89/Schedule
new { controller = "Customer", action = "Signup", id = "" } // Parameter defaults
);
Mais quand je formule un lien en utilisant ActionLink comme ceci:
<%: Html.ActionLink("Click here", "Schedule", "Customer", new { sn = "KingKong89", new { @class="topLink" })%>
Le lien hypertexte/URL résultant sort comme ceci:
http://localhost:65071/Customer/Schedule?sn=KingKong89
Il fonctionne, mais j'EXPE CTED ActionLink utiliser les routes connues et construire le lien correct qui serait:
http://localhost:65071/Customer/KingKong89/Schedule
Est-ce mon attente ne va pas? Est-ce l'URL paramétrée comme cela devrait fonctionner?
Remarque: Je ne spécifie pas {controller} dans la route. Je n'arrive pas à mélanger cette route avec la route {controller} {action} {id} plus orthodoxe - peut-être que je devrais arrêter d'essayer d'être intelligent et d'adopter la convention.
Merci pour votre aide. Luke
MISE À JOUR
J'ai une théorie que sans une voie appropriée (y compris le mot-clé spécial {contrôleur}), je ne serai pas en mesure de faire ActionLink produire des URL appropriées.
Je me tourne maintenant mes vues sur la raison pour laquelle cet itinéraire simple ne fonctionne pas:
routes.MapRoute(
"ControllerWithScreenName", // Route name
"{controller}/{sn}/{action}", // e.g. Customer/Dave/Schedule
new { controller = "Customer", action = "Signup", sn = "" } // Parameter defaults
);
Comme la seule voie, ainsi que la valeur par défaut « Root », il ne joue pas la balle. Si le nom du contrôleur est ajouté spécifiquement (comme dans le premier extrait ci-dessus), c'est le cas.
MISE À JOUR 2
En raison des contraintes de temps, je donne sur mon param-avant action URL de style et retourner au contrôleur par défaut \ Action \ param - c'est une petite chose dans le grand plan de progrès et ne pas se sentir frustré et déprimé.
MISE À JOUR 3
Je vais décommenter toutes mes voies smart-cul et essayez d'utiliser un RouteLink et préciser le type d'itinéraire à utiliser. Je pense que c'est la raison d'être du commentaire RouteLink.
MISE À JOUR 4
Ce n'est pas bon. Cela nécessite que l'application ait connaissance des routes à suivre, ce qui signifie que je perds l'option de modifier le routage à l'avenir et que tous les liens sont automatiquement mis à jour.
Salut Rob, et merci pour votre Aidez-moi. J'ai corrigé l'itinéraire (id> sn), le second est une faute de frappe ici, et le troisième est déjà comment il est configuré. Cela produit toujours de vieilles URL. Je vais enquêter plus loin. –
en êtes-vous sûr? J'ai testé celui-ci avant de le poster, et ça marche bien de mon côté. –
Je viens de tester à nouveau pour vous assurer que je reçois: