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; 
    }
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top