MultiAreaプロジェクトでViewパスを共有する方法(環境:asp.net mvc 3 vs 2010)


環境:asp.net mvc3 vs2010
マルチAreaを使用して作業する場合、Area間でSharedディレクトリを共有できるように、それぞれのSharedアドレスを登録する必要があります.
Globalでasax.csは、以下のように異なるAreaのEngineを追加する必要があります.

  
  
  
  
  1.  
  2. [csharp] view plaincopy  
  3. 01.public class MvcApplication : System.Web.HttpApplication    
  4. 02.{    
  5. 03....    
  6. 04.    
  7. 05.    protected void Application_Start()    
  8. 06.    {    
  9. 07.        RegisterRoutes(RouteTable.Routes);    
  10. 08.        ViewEngines.Engines.Add(new AgileViewEngine());    
  11. 09.        ViewEngines.Engines.Add(new MySpaceViewEngine());    
  12. 10.        ViewEngines.Engines.Add(new SFCViewEngine());    
  13. 11.    }    
  14. 12.}    
  15. 13.public class AgileViewEngine : RazorViewEngine    
  16. 14.{    
  17. 15.    private static string[] NewPartialViewFormats = new[] {    
  18. 16.        "~/Areas/Agile/Views/Shared/{0}.cshtml",    
  19. 17.    };    
  20. 18.    
  21. 19.    public AgileViewEngine()    
  22. 20.    {    
  23. 21.        basebase.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();    
  24. 22.    }    
  25. 23.}    
  26. 24.public class MySpaceViewEngine : RazorViewEngine    
  27. 25.{    
  28. 26.    private static string[] NewPartialViewFormats = new[] {    
  29. 27.        "~/Areas/MySpace/Views/Shared/{0}.cshtml"    
  30. 28.    };    
  31. 29.    
  32. 30.    public MySpaceViewEngine()    
  33. 31.    {    
  34. 32.        basebase.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();    
  35. 33.    }    
  36. 34.}    
  37. 35.public class SFCViewEngine : RazorViewEngine    
  38. 36.{    
  39. 37.    private static string[] NewPartialViewFormats = new[] {    
  40. 38.        "~/Areas/SFC/Views/Shared/{0}.cshtml"    
  41. 39.    };    
  42. 40.    
  43. 41.    public SFCViewEngine()    
  44. 42.    {    
  45. 43.        basebase.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();    
  46. 44.    }    
  47. 45.}    

これで、この3つのAreaのViews/Sharedディレクトリを共有できます.