asp.net-mvc-routing – ASP.NET MVC区域:如何隐藏URL中的“区
当运行具有博客区域和博客控制器的
MVC 2 Areas example时,URL如下所示:
http://localhost:50526/Blog/Blog/ShowRecent格式: RootUrl / AreaName / ControllerName / ActionName 刚刚发现MVC区域,它似乎是组织代码的好方法,即为每个部分创建一个区域,在我的情况下,每个部分都有自己的控制器.这意味着每个AreaName = ControllerName.这样做的效果是Url例如/ Blog / Blog /上面的双AreaName / ControllerName路径 没有对路由的完全清楚的了解,我如何设置路由不显示AreaName? 编辑: 我试图减少路由的工作量,因为它们似乎会相互影响(即需要特定的排序),并可能导致严重的头痛:-)在将现有的Webform应用转换为MVC时,我已经转换了几个核心部分,它们每个都有一个控制器和大量的视图/动作,尽管大多数数据访问是代码在组件中,Model / ViewData类的数量正在增长…我正在根模型/视图中创建子文件夹这些部分(或区域)的文件夹,并希望创建区域将以相同的方式工作,除了组织代码(使用覆盖该区域的基本路线) 解决方法
在每个区域的文件夹中,您将看到一个* AreaName * AreaRegistration.cs文件.这是存储区域路线规则的地方.默认情况下,当它们生成时,它们将包含所有其他的区域名称.问题是:如果从路由中删除区域名称“文件夹”,路由将捕获所有“标准”{controller} / { action} / {id}请求.这显然不是你想要的
要克服这一点,您可以根据该路由中存在的控制器名称,在路由上添加正则表达式过滤器.缺点?您将无法在应用程序中使用相同名称的两个控制器(至少不使用标准路由.您可以随时想到不同的路由来访问它们)) 结束了这个结构:
你应该是这样的: context.MapRoute( "Blog_default","{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional },new { controller = "(Blog|Feed)" } ); 在UserAreaRegistration.cs中: context.MapRoute( "User_default",new { controller = "(User)" } ); 在Global.asax.cs中: public static void RegisterRoutes(RouteCollection routes) { context.MapRoute( "Default",new { controller = "Home",action = "Index",id = UrlParameter.Optional } ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } 请注意,在global.asax地区注册首先! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在ASP.NET MVC中定义表单域前缀
- 如何使用Feature Toggle Nuget Package在.Net Core中启用功
- asp.net-mvc-2 – 隐藏字段作为ASP.NET MVC2应用程序中的(重
- 禁用ASP.NET EventValidation
- asp.net-mvc-3 – 如何在MVC3中格式化小数超过2位小数
- asp.net-mvc – 在.Net MVC WS-Federation站点中阻止XmlHtt
- asp.net – VirtualPathUtility.ToAbsolute()VS. Url.Conte
- asp.net Xml绑定到数据控件的具体实现
- asp.net-mvc – 使用web.config关闭MVC中的身份验证
- 实体框架 – 我们如何使用Breeze的本地时区生存
- 在ASP.net应用程序中处理Com对象
- asp.net – 何时填充已排序的asp:GridView?
- asp.net-mvc – 模型绑定和GET请求?
- asp.net-mvc-3 – 跨多个控制器操作保持值
- entity-framework – Ninject WebAPI由于DbConte
- asp.net-mvc – Ninject.Web.Common抛出Activati
- datetime – 如何指定模型绑定的日期格式?
- asp.net-mvc – 保存为“BodyPart_3ded2bfb-40be
- kendo-ui – Kendo UI MVC将MultiSelect数据值发
- file-upload – 增加Kestrel的上传请求长度限制