我试图在区域中拆分我的模块 我的模块是 1.登录 2.用户管理员 3.大师
我创建了该区域,我的第一个启动页面是(area = login,controller = login,action = loginpage)
我的代码路由配置代码是
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional },
namespaces: new[] { "SRR.Areas.Login.Controllers" }
);
}
}
LoginAreaRegistration.cs
public override string AreaName
{
get
{
return "Login";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
//Trace.WriteLine("Login");
context.MapRoute(
"Login_default",
"{controller}/{action}/{id}",
new { controller = "Login", action = "Login", id = UrlParameter.Optional },
namespaces: new[] { "SRR.Areas.Login.Controllers" }
);
}
UserAdminAreaRegistration.cs
public class UserAdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "UserAdmin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"UserAdmin_default",
"UserAdmin/{controller}/{action}/{id}",
new { controller = "Menu", action = "MenuPrivilages", id = UrlParameter.Optional },
namespaces: new[] { "SRR.Areas.UserAdmin.Controllers" }
);
}
}
这里我的起始页面登录正常,但是useradmin模块是视图没有通过错误显示它已经"无法找到资源"。
提前致谢
答案 0 :(得分:1)
登录区域注册使模式定义中的区域规范失效;将“{controller} / {action} / {id}”更改为“Login / {controller} / {action} / {id}”
如果从路由注册中删除命名空间约束会发生什么?控制器(所有这些都是Login和UserAdmin)是否在正确的命名空间中?我想登录控制器正在显示,因为我上面提到的缺少区域规范,并且Login *控制器不在正确的命名空间中。
您在RegisterRoutes方法在默认路由注册之前错过了一行:
AreaRegistration.RegisterAllAreas();
答案 1 :(得分:0)
我相信的问题是你有两次控制器'登录'和操作方法'登录',一个在区域,另一个在root。因此命名空间必须不同,但是对于两个错误的路由都有相似的命名空间。默认情况下,没有必要为默认路由指定名称空间,因为它将映射根文件。这可能是应用程序无法找到要调用的登录的原因。