Modifica la regola di ricerca per le visualizzazioni
-
11-07-2019 - |
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;
}
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.