更改视图的查找规则

时间:2009-03-12 16:33:10

标签: asp.net-mvc theming

我有一个在多个国家/地区推出的应用程序。 web.config文件中将有一个设置,用于定义国家/地区。 该国家/地区不在该网址中。

有些观点会因国家而异。 我的第一次尝试是在views文件夹中使用包含视图的文件夹,如果它们与默认视图不同:

默认

/questions/ask.aspx

西班牙

/questions/ESP/ask.aspx

如果country-folder中没有视图,则使用默认视图。有没有办法首先将ViewEngine扩展到country文件夹中的查找视图?

编辑:

这只是一个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; 
    }

1 个答案:

答案 0 :(得分:2)

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

显然,你不想硬编码位置,但这应该给你一般的想法。