Modifier la règle de recherche pour les vues
-
11-07-2019 - |
Question
J'ai une application qui est déployée dans plusieurs pays. Il y aura un paramètre dans le fichier web.config, qui définit le pays. Le pays ne sera pas dans l'URL.
Certaines vues changent en fonction du pays. Ma première tentative consiste à utiliser un dossier dans le dossier des vues contenant des vues, si elles diffèrent de la vue par défaut:
Par défaut
/questions/ask.aspx
Espagne
/questions/ESP/ask.aspx
S'il n'y a pas de vue dans le dossier pays, la vue par défaut est utilisée. Existe-t-il un moyen d'étendre ViewEngine à la recherche de vues dans le dossier pays en premier?
EDIT:
Ceci est un poc seulement. Pour voir une mise en œuvre complète, consultez
http://pietschsoft.com/?tag=/mvc
private static string[] LocalViewFormats =
new string[] {
"~/Views/{1}/ESP/{0}.aspx",
"~/Views/{1}/{0}.aspx",
"~/Views/{1}/{0}.ascx",
"~/Views/Shared/{0}.aspx",
"~/Views/Shared/{0}.ascx"
};
public LocalizationWebFormViewEngine()
{
ViewLocationFormats = LocalViewFormats;
}
La solution
public class MyViewEngine : WebFormViewEngine
{
private static string[] LocalViewFormats = new[] { "~/Views/ESP/{0}.aspx",
"~/Views/ESP/{0}.ascx" };
public MyViewEngine()
{
ViewLocationFormats = LocalViewFormats.Union(ViewLocationFormats).ToArray();
}
}
Évidemment, vous ne voulez pas coder en dur l'emplacement, mais cela devrait vous donner une idée générale.