之前我在this文章中描述了一个可插入的mvc4应用程序,其中包含MVC4中的区域概念。我在部署这个应用程序时遇到了问题,我按照here所述解决了它。
现在我想更进一步。我想使用嵌套区域,即区域内的区域。 以下是我的项目结构:
这里MainProj是主要项目,而其他项目是区域。 现在,在 CRM 区域,我想添加区域" ManageAppointments" (这是嵌套区域)
我可以添加此子区域但在路由中遇到问题。视图引擎永远不会找到 ManageAppointments 区域中的视图。
我认为这个问题是因为,路由知道主项目中的区域,但它不知道区域内有区域。以更简单的方式,路由知道CRM区域,但它从不在CRM区域内搜索MangeAppointment区域,即它不知道CRM区域内还有另一个区域。
目前我在CRM和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" }
);
}
}
MangeAppointment:
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" }
);
}
}
我认为 MangeAppointment 区域注册有问题。 提前谢谢。
答案 0 :(得分:2)
只需更改您的MangeAppointment区域注册,如下所示:
public override string AreaName
{
get
{
return "CRM/Areas/MangeAppointment";
}
}
如果你只是回归" MangeAppointment"它将在主项目中搜索ManageAppointment
,即它将搜索位置错误的位置 MainProj / Areas / MangeAppointment 。
但是当你返回CRM/Areas/MangeAppointment
时,它会搜索到。{
location MainProj / Areas / CRM / Areas / MangeAppointment 。