ASP.NET MVC - Puis-je avoir plusieurs noms pour la même action? P>
Dans le même contrôleur ... puis-je avoir plusieurs noms pour la même action? P>
Je cherche une solution de langue multiple complète. Essentiellement, je veux que toute la logique soit la même, mais modifiez les "mots-clés" (actions, contrôleurs de l'URL) en fonction de la langue. P>
3 Réponses :
Je ne suis pas sûr que si plusieurs noms d'action sont possibles. Une façon, je pouvais penser à ce que ce soit en définissant plusieurs actions avec des noms différents sur les mêmes actions / exécutant la même action. P>
Belle solution de contournement! Mais l'URL "finale" produite aura le nom de l'action "principale" que chaque autre action appelle.
Je ne le pense pas. Je ne suggère pas la redirection à une autre action. Vous pouvez simplement exécuter une autre action (c'est une autre méthode publique dans la classe Controller) et renvoie qu'il résulte du navigateur tout en exécutant une action.
Ok ... maintenant je l'obtiens. Je viens de "envelopper" l'action "une autre langue" autour d'une action générique, à la fois "faire" la même chose qui semble logique :)
Vous ne pouvez pas avoir plusieurs noms pour la même action. Ce seront des actions différentes. C'est la façon dont la MVC fonctionne. MABE Il est préférable de mettre en œuvre le comportement décrit avec le routage. Ecoutez, vous devez créer de nombreux itinéraires, mais vous pouvez créer des fichiers de configuration ou stocker des données de routage dans la base de données et simplement les créer en boucle. sur la demande de début. Quoi qu'il en soit, je pense que c'est mieux, puis crée Plante de méthodes, car vous voudrez ajouter une langue de plus, vous devez trouver des actions sur vos contrôleurs et recompiler le code. Mais en cas de routes et de fichiers de configuration, il ne devient pas si difficile.
La deuxième chose est HTML.ActionLink ("Accueil", "Index", "Accueil") Extension - Vous devrez mettre en œuvre le vôtre pour renvoyer un lien d'action localisé. P> P>
Eu cette idée aussi, après avoir posté. Pensez-vous que je peux avoir des noms d'action différents appeler la même classe à faire quelque chose et avoir ces classes (logique d'action) dans un fichier différent?
Oui, vous pouvez. Mais comme je l'ai déjà dit, cela cousira beaucoup de douleur lorsque vous souhaiterez ajouter une nouvelle langue. De plus, il semblera étrange de voir dans les méthodes de code qui nommées dans différentes langues et font la même chose. Je pense vraiment que le routage sera beaucoup plus approprié dans votre cas, car il utilise des chaînes. Et chaque tyme que nous localisons quelque chose - nous localisons les chaînes - pas de noms des méthodes. Mais c'est seulement mon avis :)
Je sais que je suis en retard à la fête, mais dans au cas où quelqu'un est googling, j'ai créé un attribut (inspiré de l'attribut ActionName) qui correspond à plusieurs noms comme suit:
[ActionNames("CreateQuickItem", "CreateFullItem")]
public ActionResult Create() {}
Toute suggestion pour le noyau net?
Le paillis Je suis toujours coincé dans la terre .Net, seulement un débutant au cœur. Espérons que quelqu'un d'autre peut ajouter quelque chose.
Pas de soucis j'ai trouvé la balle d'alternative @mark
Ne pouviez-vous pas régler le fil.currentThread.CurrentCulture, thread.currentThread.CurrentUculture à la place? msdn.microsoft.com/en-us/library/bz9tc508.aspx