环境:asp.net mvc3 vs2010

当使用多Area工作时,为了能在Area之间共享Shared目录,需要注册各自Shared地址。

在Global.asax.cs,需要如下添加不同Area的Engine:

public class MvcApplication : System.Web.HttpApplication { ... protected void Application_Start() { RegisterRoutes(RouteTable.Routes); ViewEngines.Engines.Add(new AgileViewEngine()); ViewEngines.Engines.Add(new MySpaceViewEngine()); ViewEngines.Engines.Add(new SFCViewEngine()); } } public class AgileViewEngine : RazorViewEngine { private static string[] NewPartialViewFormats = new[] { "~/Areas/Agile/Views/Shared/{0}.cshtml", }; public AgileViewEngine() { base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray(); } } public class MySpaceViewEngine : RazorViewEngine { private static string[] NewPartialViewFormats = new[] { "~/Areas/MySpace/Views/Shared/{0}.cshtml" }; public MySpaceViewEngine() { base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray(); } } public class SFCViewEngine : RazorViewEngine { private static string[] NewPartialViewFormats = new[] { "~/Areas/SFC/Views/Shared/{0}.cshtml" }; public SFCViewEngine() { base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray(); } }

这样,这三个Area的Views/Shared目录就可以共享了。