2009-08-28 7 views
0

J'essaie actuellement d'utiliser helplink helpers d'une manière que je ne pense pas a été décrite dans NerdDinner.Comment changer de contrôleur en utilisant un lien d'action, passer à la racine du site Web

Disons que je suis sur cette page

/Dîners/

et sur cette page il y a une liste des dîners, ok fine et travailler

Maintenant, supposons que je veux GOTO un nouveau section du site, que j'ai créé un nouveau contrôleur MenuItemsController

ainsi disons que je veux aller à une nouvelle partie du site qui gère les éléments de menu.

allant à

/menuitems/3

aborderait tous les éléments du menu assoicated dîner id 3.

Cela fonctionne aussi.

Je ne parviens pas à, relier à chacune des pages de l'élément de menu, parce que quand j'utilise le code ActionLink, sans beaucoup de modification que je reçois ce

dinner1 = lien/dîners/menuitems/3

plutôt que

dîner = lien/menuitems/3

Le code ActionLink je suis en train est

<%= Html.ActionLink("Menu Items", "/menuitems", new { id=item.id })%> 

vous pouvez le voir /. Cela semble faux.

Je ne savais pas si cet article parlait du même problème ou pas.

how do i have links to root controllers in site.master in asp.net mvc

sont l'action lie le tout à fait mauvaise chose pour moi d'être ici en utilisant, becuase ils sont binded directement au contrôleur Je suis actuellement à l'intérieur de?

Si tel est le cas, quelle serait la meilleure méthode pour réaliser ce que j'essaie de faire, et aussi ajouter de la complexité comme créer un lien pour créer/modifier/supprimer des méthodes?

Répondre

1

Il suffit de se débarrasser de la barre oblique et spécifiez le contrôleur et l'action explicitement:

<%= Html.ActionLink("Menu Items", "Item", "menuitems", 
    new RouteValueDictionary { { "id", item.id } })%> 

Vous ne donnez pas un nom d'action dans vos exemples, donc je devinais « article. » Insérez le nom de l'action correcte, évidemment.

Le nom du contrôleur actuel est utilisé si vous utilisez l'une des surcharges ActionLink qui ne prennent pas de nom de contrôleur.

J'ai écrit an in-depth explanation of routing, ActionLink, and more.

+1

Cela n'a pas fonctionné au début, car il a ajouté une propriété de longueur, mais ce poste m'a aidé. http://stackoverflow.com/questions/824279/why-does-html-actionlink-render-length4 Ce serait bien si quelqu'un pouvait me donner des instructions sur la façon d'ajouter le bit d'identifiant de la chaîne, car mon la méthode semble bodgy <% = Html.ActionLink ("Options de menu", "menuitems /" + item.id, nouveau {controller = "menuitems"}, nouveau {id = item.id})%> Il semble la dernière partie du lien d'action peut être redondante maintenant, mais elle n'a rien fait avant –

+0

Le problème est qu'il y a environ 10 surcharges d'ActionLink, dont beaucoup ont des paramètres de type objet. Je vais changer la syntaxe dans ma réponse à une version plus robuste. –

Questions connexes