J'ai un itinéraire défini avec plusieurs segments (non codées en dur paramètres):générer des liens pour des itinéraires avec des segments d'URL non-paramètre sur ASP.NET MVC 2
routes.MapRoute(null, "suggestion/list/by/{tag}",
new { controller = "Suggestion", action = "List", tag = UrlParameter.Optional });
suppose que je suis dans la vue Index des SuggestionController, qui possède un objet Suggestion pour Model, comment puis-je créer un lien correspondant à cette route?
Je sais que je peux j'accomplir en utilisant plaine ol » html comme:
<a href="/suggestion/list/by/<%=Model.Tag %>"><%=Model.Tag %></a>
Mais cela ne permet pas de transmettre d'autres paramètres de l'itinéraire (comme RouteValueDictionary, par exemple), non?
Je me demandais en fait s'il serait possible d'utiliser l'un des assistants fournis, mais sans nommer l'itinéraire. Je préférerais garder le nom de la route comme nul afin d'éviter de coder en dur sur mes vues, mais je n'arrive pas à comprendre comment utiliser ces segments sans paramètre dans les méthodes Html.ActionLink ou RouteLink.
Des idées?
Merci d'avance.
Merci pour notre réponse s1mm0t. 2 choses: J'imagine que vous vouliez dire Html.ActionLink sur le premier extrait de code (Html.Action n'a pas cette surcharge), donc j'ai essayé ActionLink comme vous l'avez suggéré mais il rend l'itinéraire suivant: /suggestion/list/by? Tag = TestTag qui, bien sûr, ne fonctionne pas. Je devais en fait rendre: /suggestion/list/by/TestTag Est-ce que je manque quelque chose dans la définition d'itinéraire? –
Oui, vous avez raison, il y a une faute de frappe dans la solution au-dessus de laquelle j'ai maintenant ajouté une modification. Je l'ai testé deux fois maintenant et ça marche bien pour moi avec les deux solutions ci-dessus (en utilisant ActionLink évidemment, O)). Votre route est-elle définitivement utilisée? Les routes les plus spécifiques doivent être ajoutées en premier, sinon une route plus générale sera utilisée. Essayez d'ajouter votre itinéraire ci-dessus en tant que première route, juste comme un test, puis essayez d'utiliser ActionLink. – s1mm0t
Ok c'est embarrassant ... J'ai eu une faute de frappe dans la définition de ma route pour le * seul paramètre * en elle. Mon itinéraire a été défini comme suggestion/liste/par/{it}, ce qui bien sûr rendra le tap comme paramètre de chaîne de requête. : þ Merci s1mm0t, vous allez à la maison avec la bonne réponse;) –