Domanda

Ho un'applicazione che viene implementata in più paesi. Ci sarà un'impostazione nel file web.config, che definisce il paese. Il Paese non sarà nell'URL.

Alcune visualizzazioni cambiano in base al Paese. Il mio primo tentativo è di utilizzare una cartella all'interno della cartella delle viste che contiene le viste, se differiscono dalla vista predefinita:

default

/questions/ask.aspx

Spagna

/questions/ESP/ask.aspx

Se nella cartella del paese non è presente alcuna vista, viene utilizzata la vista predefinita. Esiste un modo per estendere ViewEngine alle viste di ricerca nella cartella del paese prima?

EDIT:

Questo è solo un poc. Per vedere un'implementazione completa dai un'occhiata a

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; 
    }
È stato utile?

Soluzione

public class MyViewEngine : WebFormViewEngine
{
    private static string[] LocalViewFormats = new[] { "~/Views/ESP/{0}.aspx",
                                                          "~/Views/ESP/{0}.ascx" };
    public MyViewEngine()
    {
        ViewLocationFormats = LocalViewFormats.Union(ViewLocationFormats).ToArray();
    }
}

Ovviamente, non si desidera codificare la posizione, ma questo dovrebbe darti l'idea generale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top