Asp.net mvc 带静态前缀的MVC路由
我的routeConfig文件中有两条路由,如下所示Asp.net mvc 带静态前缀的MVC路由,asp.net-mvc,asp.net-mvc-4,asp.net-routing,Asp.net Mvc,Asp.net Mvc 4,Asp.net Routing,我的routeConfig文件中有两条路由,如下所示 带有admin前缀的路由,用于处理管理员部分的请求 没有前缀的默认路由,我为其添加了一个datatoken以映射候选区域中的路由 但问题是当我键入urllocalhost/MyApp/Admin/Home/Index 它在abc.namespace1中点击控制器(这是预期的),并且localhost/MyApp/Home/Index也在abc.namespace1中点击主控制器,而不是候选区域中的abc.namespace2 这里我要做的是处
关于我相信这可能与您指定名称空间的方式有关。命名空间必须是控制器类驻留的位置 模式通常是
。
例如,在一个区域名为“Admin”的项目中,命名空间必须是:
"MvcMusicStore.Areas.Admin.Controllers"
根据我的经验,关于如何设置区域的约定相当严格。您不应在区域注册
中设置路线,而应在项目的根目录中设置路线,以使其正常工作
public class CandidateAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Candidate";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Candidate_default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Login", id = UrlParameter.Optional },
new string[] { "<project name>.Areas.Candidate.Controllers" }
);
}
}
公共类候选人注册:区域注册
{
公共重写字符串区域名
{
得到
{
返回“候选人”;
}
}
公共覆盖无效注册表区域(AreaRegistrationContext上下文)
{
context.MapRoute(
“候选人默认值”,
“{controller}/{action}/{id}”,
新建{controller=“Account”,action=“Login”,id=UrlParameter.Optional},
新字符串[]{.Areas.Candidate.Controllers“}
);
}
}
这些领域以公约为基础。如果你偏离预期的惯例太远,它们根本就不起作用
public class CandidateAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Candidate";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Candidate_default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Login", id = UrlParameter.Optional },
new string[] { "<project name>.Areas.Candidate.Controllers" }
);
}
}