J'essaie de naviguer entre les contrôleurs à l'aide de ActionLink
. Je vais raconter mon problème avec un exemple.
Je suis sur la vue Index du contrôleur Hat et j'essaie d'utiliser le code ci-dessous pour créer un lien vers l'action Détails du contrôleur de produit.
<%= Html.ActionLink("Details", "Details", "Product", new { id=item.ID }) %>
Au lieu de créer un lien vers Détails sur le contrôleur de produit, cela génère un lien vers l'action Détails sous le contrôleur Hat et ajoute un paramètre Longueur à la fin de celui-ci:
Hat/Details/9?Length=7
Je ne peux pas utiliser HTML.ActionLink
pour basculer entre les contrôleurs à cause de ce problème. J'apprécierai si vous pouvez me signaler ce que je fais mal. Merci
PS: j'utilise le paramètre de route par défaut fourni avec MVC
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" } );
asp.net-mvc
kaivalya
la source
la source
Avec ces paramètres, vous déclenchez la mauvaise fonction / méthode surchargée.
Ce qui a fonctionné pour moi:
Il déclenche HtmlHelper.ActionLink (string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
J'utilise MVC 4.
Cheerio!
la source
Pour des raisons de clarté, je recommanderais d'écrire ces assistants à l'aide de paramètres nommés:
la source
Si vous prenez l'assembly MVC Futures (que je recommande fortement), vous pouvez ensuite utiliser un générique lors de la création d'ActionLink et un lambda pour construire la route:
Vous pouvez obtenir l'assemblage des futures ici: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471
la source
Vous frappez mal la surcharge d'ActionLink. Essayez plutôt cela.
la source
essayez ça marche bien
la source
Une solution alternative serait d'utiliser l'
Url
objet d'assistance pour définir l'href
attribut d'une<a>
balise comme:la source
Notez que Détails est une page "Affichage" sous le dossier "Produits".
ProductId est la clé primaire de la table. Voici la ligne d'Index.cshtml
la source
ce code a fonctionné pour moi en vue partielle:
la source