Изменение правила поиска для представлений
-
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();
}
}
Очевидно, что вы не хотите жестко запрограммировать местоположение, но это должно дать вам общее представление.