Cambiar la regla de búsqueda de vistas
-
11-07-2019 - |
Pregunta
Tengo una aplicación que se implementa en varios países. Habrá una configuración en el archivo web.config que define el país. El país no estará en la URL.
Algunas de las vistas cambian según el país. Mi primer intento es usar una carpeta dentro de la carpeta de vistas que contiene vistas, si difieren de la vista predeterminada:
Predeterminado
/questions/ask.aspx
España
/questions/ESP/ask.aspx
Si no hay vista en la carpeta del país, se usa la vista predeterminada. ¿Hay alguna manera de extender ViewEngine para buscar vistas en la carpeta del país primero?
EDITAR:
Esto es solo un poc. Para ver una implementación completa, eche un vistazo 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;
}
Solución
public class MyViewEngine : WebFormViewEngine
{
private static string[] LocalViewFormats = new[] { "~/Views/ESP/{0}.aspx",
"~/Views/ESP/{0}.ascx" };
public MyViewEngine()
{
ViewLocationFormats = LocalViewFormats.Union(ViewLocationFormats).ToArray();
}
}
Obviamente, no desea codificar la ubicación, pero esto debería darle una idea general.