asp.net – MVC4默认路由指向某个区域
发布时间:2020-05-24 09:58:33 所属栏目:asp.Net 来源:互联网
导读:我的项目中有两个区域: Areas | AdminAreas | FrontEnd 我想要的是当我访问该站点时,默认路由应该从FrontEnd区域加载Controllers / Views / Models.为管理员面板设置Url / Admin是正常的,但我宁愿不必强制Url / FrontEnd(或其他一些变体).基本上我不想在根级
|
我的项目中有两个区域: Areas | Admin Areas | FrontEnd 我想要的是当我访问该站点时,默认路由应该从FrontEnd区域加载Controllers / Views / Models.为管理员面板设置Url / Admin是正常的,但我宁愿不必强制Url / FrontEnd(或其他一些变体).基本上我不想在根级别使用Controller / Model / View文件夹. 我不知道如何更改代码以允许这个甚至是一个可取的方法.有人可以提供一些指导吗? 是)我有的: routes.MapRoute(
"Admin_default","Admin/{controller}/{action}/{id}",new {
area = "Admin",controller = "Home",action = "Index",id = UrlParameter.Optional
},namespaces: new[] { "WebsiteEngine.Areas.Admin.Controllers" }
);
routes.MapRoute(
name: "Default",url: "{controller}/{action}/{id}",defaults: new {
area = "FrontEnd",namespaces: new[] { "WebsiteEngine.Areas.FrontEnd.Controllers" }
);
但是这会产生错误: The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Home/Index.aspx ~/Views/Home/Index.ascx ~/Views/Shared/Index.aspx ~/Views/Shared/Index.ascx ~/Views/Home/Index.cshtml ~/Views/Home/Index.vbhtml ~/Views/Shared/Index.cshtml ~/Views/Shared/Index.vbhtml 我确实有区域的视图,这看起来不像它在那里. 解决方法我相信你可以这样做:// Areas/Admin/AdminAreaRegistration.cs
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "Admin"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "Admin_Default",url: "Admin/{controller}/{action}/{id}",defaults: new
{
area = "Admin",id = UrlParameter.Optional
});
}
}
// Areas/Admin/FrontEndAreaRegistration.cs
public class FrontEndAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "FrontEnd"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
name: "FrontEnd_Default",defaults: new
{
area = "FrontEnd",id = UrlParameter.Optional
});
}
}
// Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
...
}
现在,在RouteConfig类中,您可能已设置了默认路由.请记住,只要在调用RouteConfig.RegisterRoutes之前调用AreaRegistration.RegisterAllAreas,您在区域中设置的路由可能会覆盖您在RouteConfig中设置的路由. (路由按它们在Routes集合中出现的顺序进行评估,而.MapRoute将新路由推送到最后) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET – UpdatePanel和JavaScript
- asp.net – 由TaskScheduler和SynchronizationContext混淆同
- asp.net-mvc – 为什么我们使用ViewModels?
- ASP.NET中的401.2的customerrors
- 如何在asp.net中实现文件下载
- asp.net-web-api – asp.net webapi 2属性路由不工作
- asp.net-mvc – 使用ViewData或不使用ViewData
- 数据注释 – MVC3中的ModelState.IsValid vs IValidateable
- asp-classic – 从Classic ASP执行存储过程
- 如何在ASP.NET和C#中加载下拉列表?
推荐文章
站长推荐
热点阅读
