J'ai une page maître partagée que j'utilise à partir de 2 zones différentes dans mon application mvc 2. La page maître a un lien d'action qui spécifie actuellement le contrôleur et l'action, mais bien sûr, le lien ne fonctionne pas si je suis dans la mauvaise zone. Je ne vois pas de surcharge pour actionlink qui prend un paramètre de zone, est-ce possible?Comment spécifier un nom de zone dans un lien d'action?
Répondre
figured it out ..
Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})
Quelque chose que je courais en juste après cela, que j'imagine que d'autres pourraient courir dans: Si vous devez créer un lien à partir d'une zone à une action pas dans une zone, vous encore besoin de spécifier la zone comme chaîne vide. Par exemple, j'ai déplacé du code MVC dans une zone, et j'ai trouvé que j'avais besoin de mettre à jour les URL dans la page maître qui référencent d'autres pages sur le site.
Pour spécifier une URL pour quelque chose de pas dans une zone, utilisez
Html.ActionLink("home", "Index", new { area = "", controller = "Home" })
Ceci est un très bon pourboire! Mais il ne donne pas de résultats attendus avec MVC 2 .. Petite correction - Html.ActionLink ("home", "Index", nouveau {area = "", controller = "Home"}) –
En MVC2 donnant area="root"
a fonctionné pour moi comme ci-dessous
Html.ActionLink("Home", "Index", "Home", new { Area = "root" }, new{})
Voici ce que je suis venu avec une solution permettre à un utilisateur de se connecter aux systèmes d'authentification prédéfinis.
Chaque zone contient une version du fichier _LoginPartial.cshtml.
Je pourrais probablement obtenir l'application d'utiliser une seule version du fichier, mais j'ai continué à courir dans les erreurs en essayant d'utiliser une seule connexion partielle.
Ce n'est qu'une légère modification du loginpartial généré original, mais il semble bien fonctionner lorsqu'il est utilisé dans des domaines spécifiques.
Voici le code qui est utilisé dans tous:
@if (Request.IsAuthenticated)
{
<text>
Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", new { area = "" }, htmlAttributes: new { @class = "username", title = "Manage" })!
@using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}
</text>
}
else
{
<ul>
<li>@Html.ActionLink("Register", "Register", "Account", new { area = "" }, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", new { area = "" }, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}
Définir explicitement le 'htmlAttributes:' travaillé très bien pour l'utilisation de plusieurs paramètres. –
Utilisation:
Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)
Remarque: 4ème paramètre est de passer la route Values
, si vous passez un paramètre vide il considérera la structure de racine et si vous passez la valeur appropriée l'emploient comme région.
ne pas oublier également d'utiliser null
ou new{}
comme le 5ème paramètre, car le passage null
ou new {}
tout en créant le lien d'action ne sera pas surcharger la méthode pour (text,action,controller,route data)
ou son (text,action,controller,route data,html attribute)
utiliser de sorte que la bonne méthode
Une astuce que vous pouvez faire Si vous utilisez beaucoup une zone dans une vue, définissez-la comme une variable en haut:
@{ var awesomeArea = new { area = "Awesome" }; }
@Html.Action("Something", "Somewhere", awesomeArea)
@Html.ActionLink("Stuff", "FooBar", awesomeArea)
- 1. Comment spécifier un nom de colonne (dans une clause where) qui a un espace dans MySql
- 2. Comment spécifier un élément enfant dans un schéma XML avec un nom mais du contenu?
- 3. Comment spécifier un nom d'utilisateur avec un @ incorporé dans une URL? (MacHg Mercury - mais pas spécifiquement)
- 4. Un nom de paramètre de méthode doit-il spécifier son unité dans son nom?
- 5. comment spécifier un BIGINT dans un échafaudage de rails?
- 6. Lien hypertexte dans une zone de texte
- 7. Est-il possible de spécifier un nom de classe pour Spring Framework dans un fichier externe?
- 8. Comment utiliser une chaîne de caractères pour spécifier un nom de colonne dans SubSonic 3.0
- 9. Comment spécifier un onglet dans .screenrc?
- 10. Comment spécifier un motif ignoré dans grep?
- 11. Est-il possible de spécifier un nom de fichier suggéré lors de l'utilisation de données: URI?
- 12. Comment gérer un lien cliqué dans JavaScript?
- 13. Comment spécifier un lien canonique dans l'application sur heroku lorsqu'un autre domaine pointe vers celui-ci
- 14. Comment spécifier un paramètre non-positionnel dans un script PowerShell?
- 15. NSString dans un lien
- 16. Comment lier un lien hypertexte WPF dans une zone de texte riche à une commande?
- 17. Dans Wordpress, comment ajouter un lien vers la zone de menu Dashboard en haut à gauche?
- 18. tkFileDialog.askopenfilename Comment spécifier un lecteur différent?
- 19. Incrémenter un nombre au nom de la zone de texte
- 20. Comment empêcher un saut de ligne dans un lien html?
- 21. Affichage d'un lien dans une zone hyperliée
- 22. Comment spécifier un paramètre psycopg2 pour un tableau d'horodatage (datetimes)
- 23. Comment puis-je spécifier un nom de fichier variable à l'aide de SSIS?
- 24. Comment spécifier un nom jndi différent de celui par défaut pour un EJB dans JBoss 4.2.2.GA?
- 25. Dans Boo, comment puis-je spécifier un paramètre de tableau?
- 26. Comment spécifier un tampon de taille fixe dans C++/CLI?
- 27. Comment spécifier un type de colonne dans nHibernate fluide?
- 28. Comment spécifier un type de propriété d'objet dans Spring.NET
- 29. comment imiter un lien cliquez dans QTextBrowser
- 30. comment créer un lien hypertexte dans piechart
Oui, c'est une bonne approche. – Ravia
AH !!! c'est ce 'new {}' à la fin que je n'oublie pas d'inclure! –
@ Pure.Krome - oui. Rien d'intuitif à ce sujet! – Jeremy