重命名ASP.NET MVC中的“Areas”文件夹

时间:2016-12-01 22:01:45

标签: asp.net-mvc

是否可以重命名区域文件夹?在这种情况下,visual studio和razor会找到正确的观看路径吗?

2 个答案:

答案 0 :(得分:3)

是的,这是可能的!让我们轻松关注将一个区域从Foo重命名为Bar的任务。

  1. 将区域文件夹Foo重命名为Bar
  2. 区域文件夹必须包含一个名称以AreaRegistration.cs结尾的文件。将其从FooAreaRegistration.cs重命名为BarAreaRegistration.cs。 (当前步骤不是强制性的,但有助于保持代码清洁)
  3. 从以下位置编辑BarAreaRegistration.cs文件:

    public override string AreaName 
    {
       get 
       {
           return "Foo";
       }
    }
    
    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
           "Foo_default",
           "Foo/{controller}/{action}/{id}",
           new { action = "Index", id = UrlParameter.Optional }
       );
    }
    

    到:

    public override string AreaName 
    {
       get 
       {
           return "Bar";
       }
    }
    
    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
           "Bar_default",
           "Bar/{controller}/{action}/{id}",
           new { action = "Index", id = UrlParameter.Optional }
       );
    }
    
  4. 将类名称空间从名称空间xxxxx.Foo重命名为xxxxx.Bar

  5. 替换Bar文件夹中每个控制器的命名空间

  6. 在需要时用视图中的条替换Foo(通常在使用特定区域布局时获得绝对路径

  7. 经测试的MVC> 4.0

    希望这有帮助

答案 1 :(得分:1)

是的,可以在MVC中重命名Areas文件夹。这是Razor View Engine查找区域视图的位置。在Global.asax文件中添加以下代码。现在,View Engine将在〜/ Modules / HelloArea / Views / Hello / Index.cshtml中搜索区域视图,而不是〜/ Areas / HelloArea / Views / Hello / Index.cshtml

RazorViewEngine viewEngine = new RazorViewEngine();
viewEngine.AreaMasterLocationFormats =
viewEngine.AreaPartialViewLocationFormats =
viewEngine.AreaViewLocationFormats =
        new string[] {
    "~/Modules/{2}/Views/{1}/{0}.cshtml",
    "~/Modules/{2}/Views/Shared/{1}/{0}.cshtml"};
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(viewEngine);