Изменение правила поиска для представлений

StackOverflow https://stackoverflow.com/questions/639450

  •  11-07-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое распространяется в нескольких странах.В файле web.config будет параметр, определяющий страну.Страна не будет указана в URL.

Некоторые взгляды меняются в зависимости от страны.Моя первая попытка — использовать папку внутри папки представлений, содержащую представления, если они отличаются от представления по умолчанию:

По умолчанию

/questions/ask.aspx

Испания

/questions/ESP/ask.aspx

Если в папке страны нет представления, используется представление по умолчанию.Есть ли способ расширить ViewEngine, чтобы сначала искать представления в папке страны?

РЕДАКТИРОВАТЬ:

Это только POC.Чтобы увидеть полную реализацию, посмотрите

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; 
    }
Это было полезно?

Решение

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

Очевидно, что вы не хотите жестко запрограммировать местоположение, но это должно дать вам общее представление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top