J'ai une page maître partagée que j'utilise à partir de 2 zones différentes de 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 aucune surcharge pour actionlink qui prend un paramètre de zone, est-il possible de le faire?
156
Quelque chose que j'ai rencontré juste après cela, que j'imagine que d'autres pourraient rencontrer: si vous devez créer un lien depuis une zone vers une action qui ne se trouve pas dans une zone, vous devez toujours spécifier la zone comme une chaîne vide.
Par exemple, j'ai déplacé du code MVC dans une zone et j'ai trouvé que je devais mettre à jour les URL dans la page maître qui référençaient d'autres pages sur le site.
Pour spécifier une URL vers quelque chose qui ne se trouve pas dans une zone, utilisez
la source
Utilisation:
Remarque : le 4ème paramètre est de passer route
Values
, si vous passez un paramètre vide, il prendra en compte la structure racine et si vous passez la valeur appropriée, il l'utilisera comme zone.N'oubliez pas non plus d'utiliser
null
ounew{}
comme 5ème paramètre car le fait de passernull
ounew {}
lors de la création d'un lien d'action ne surchargera pas la méthode pour(text,action,controller,route data)
ou(text,action,controller,route data,html attribute)
alors utilisez la méthode appropriéela source
Dans MVC2, le don a
area="root"
fonctionné pour moi comme ci-dessousla source
Une astuce intéressante que vous pouvez faire si vous utilisez beaucoup une zone dans une vue est de la définir comme une variable en haut:
la source
Voici ce que j'ai proposé comme solution pour permettre à un utilisateur de se connecter aux systèmes d'authentification pré-construits.
Chacun de mes domaines a une version du fichier _LoginPartial.cshtml.
Je pourrais probablement faire en sorte que l'application utilise une seule version du fichier, mais j'ai continué à rencontrer des erreurs en essayant d'utiliser une seule connexion partielle.
Ce n'est qu'une légère modification du loginpartial généré d'origine, mais il semble bien fonctionner lorsqu'il est utilisé dans des domaines spécifiques.
Voici le code qui est utilisé dans chacun d'eux:
la source
htmlAttributes:
fonctionnement a très bien fonctionné pour l'utilisation de plusieurs paramètres.Si vous ne pouvez pas utiliser le lien d'application Web standard comme À propos, Accueil, Contac, etc. de la zone. Vous changez de ligne
de
Views \ Shared_Layout.cshtml
la source
Dans mon application ASP Net Core, j'ajoute simplement la zone aux attributs html comme ceci:
la source
En utilisant
Réalisera ce que vous recherchez.
Le DisplayText est ce qui va afficher (le même que
<a href="#">DisplayText</a>
), le ActionName est la méthode appelée dans le contrôleur et ControllerName est évidemment le contrôleur que vous voulez appeler! Le paramètre suivant est «Valeur de l'itinéraire» où vous ajouteriez votre zone. Si vous êtes actuellement dans une zone et que vous souhaitez revenir à votre racineHome/Index
par exemple, vous laisseriez la valeur sous forme de chaîne vide, par exemplenew { area = ""}
. La valeur finale est «Attributs Html» et où vous ajouteriez une classe si vous le souhaitiez et devrait être unnull
si vous n'avez aucun attribut à ajouter. Mais comme le dernier paramètre est vu comme «Attributs Html»; pour que les valeurs d'itinéraire soient reconnues, cela doit êtrenull
la source