C# 具有嵌套区域的ASP.NET MVC4应用程序

C# 具有嵌套区域的ASP.NET MVC4应用程序,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-areas,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Areas,之前,我构建了一个可插拔的mvc4应用程序,其中包含了mvc4中的区域概念,如本文所述。我在部署这个应用程序时遇到了问题,我按照描述解决了它 现在我想更进一步。我想使用嵌套区域,即区域内的区域。 以下是我的项目结构: 这里的MainProj是主要项目,而其他项目是区域。 现在,在CRM区域中,我想添加区域“ManageAppointment”(这是嵌套区域) 我能够添加此子区域,但在布线方面面临问题。视图引擎从不在管理约会区域中找到视图 我认为这个问题是因为,路由知道主项目内的区域,但它不知道

之前,我构建了一个可插拔的mvc4应用程序,其中包含了mvc4中的区域概念,如本文所述。我在部署这个应用程序时遇到了问题,我按照描述解决了它

现在我想更进一步。我想使用嵌套区域,即区域内的区域。 以下是我的项目结构:

这里的MainProj是主要项目,而其他项目是区域。 现在,在CRM区域中,我想添加区域“ManageAppointment”(这是嵌套区域)

我能够添加此子区域,但在布线方面面临问题。视图引擎从不在管理约会区域中找到视图

我认为这个问题是因为,路由知道主项目内的区域,但它不知道区域内有区域。更简单地说,路由知道CRM区域,但它从不在CRM区域内搜索MangeAppoint区域,即它不知道CRM区域内还有另一个区域

目前,我的CRM和MangeAppoint区域注册如下:

public override string AreaName
{
     get
     {
         return "CRM/Areas/MangeAppointment";
     }
}
CRM:

public class CRMAreaRegistration : AreaRegistration
{
       public override string AreaName
       {
           get
           {
               return "CRM";
           }
       }

       public override void RegisterArea(AreaRegistrationContext context)
       {
           context.MapRoute(
               "CRM_default",
               "CRM/{controller}/{action}/{id}",
               new { action = "Index", id = UrlParameter.Optional },
               new string[] { "CRM.Controllers" }
           );
       }
 }
public class MangeAppointmentAreaRegistration : AreaRegistration
{
          public override string AreaName
          {
              get
              {
                  return "MangeAppointment";
              }
          }

          public override void RegisterArea(AreaRegistrationContext context)
          {
              context.MapRoute(
                  "MangeAppointment_default",
                  "MangeAppointment/{controller}/{action}/{id}",
                  new { action = "Index", id = UrlParameter.Optional },
                  new string[] { "MangeAppointment.Controllers" }
              );
          }
 }
管理要点:

public class CRMAreaRegistration : AreaRegistration
{
       public override string AreaName
       {
           get
           {
               return "CRM";
           }
       }

       public override void RegisterArea(AreaRegistrationContext context)
       {
           context.MapRoute(
               "CRM_default",
               "CRM/{controller}/{action}/{id}",
               new { action = "Index", id = UrlParameter.Optional },
               new string[] { "CRM.Controllers" }
           );
       }
 }
public class MangeAppointmentAreaRegistration : AreaRegistration
{
          public override string AreaName
          {
              get
              {
                  return "MangeAppointment";
              }
          }

          public override void RegisterArea(AreaRegistrationContext context)
          {
              context.MapRoute(
                  "MangeAppointment_default",
                  "MangeAppointment/{controller}/{action}/{id}",
                  new { action = "Index", id = UrlParameter.Optional },
                  new string[] { "MangeAppointment.Controllers" }
              );
          }
 }
我认为MangePoint区域注册有问题。
提前感谢。

只需按如下方式更改您的管理点区域注册:

public override string AreaName
{
     get
     {
         return "CRM/Areas/MangeAppointment";
     }
}
如果您只返回“MangeAppoint”,它将在主项目中搜索
ManageAppointment
,即它将在位置MainProj/Areas/MangeAppoint中搜索错误的位置

但是当您返回
CRM/Areas/MangeAppoint
时,它将在
locationMainProj/Areas/CRM/Areas/mangeapoint

这个类的名称空间应该是什么。?客户关系管理或维护项目。?请提供帮助。子区域内控制器操作的路由结构是什么