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; 
    }
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top