asp.net-mvc-routing – 在.NET MVC 4.0 URL结构中强制使用连字
我正在寻找一种自动连接CamelCase动作和视图的方法.也就是说,我希望我不必实际重命名我的视图或向网站中的每个ActionResult添加装饰器.
到目前为止,我一直在使用routes.MapRouteLowercase,如here所示.这对于URL结构的小写方面非常有效,但不是连字符.所以我最近开始玩Canonicalize(通过NuGet安装),但它也没有任何连字符. 我在努力…… routes.Canonicalize().NoWww().Pattern(“([a-z0-9])([A-Z])”,“$1- $2”).小写().NoTrailingSlash(); 我的正则表达式肯定会按照我希望的方式正常工作,以便正确地重构URL,但当然不会识别这些URL.例如,该文件仍然是ChangePassword.cshtml,因此/ account / change-password不会指向该文件. 顺便说一句,我对.NET MVC仍然有点生疏.我没有使用它几年而不是从v2.0开始. 解决方法
这可能有点混乱,但如果您创建了自定义
HttpHandler和
RouteHandler,则应该可以防止您重命名所有视图和操作.您的处理程序可以从请求的操作中删除连字符,这会将“change-password”更改为changepassword,从而呈现ChangePassword操作.
为简洁起见,缩短了代码,但重要的部分就在那里. public void ProcessRequest(HttpContext context) { string controllerId = this.requestContext.RouteData.GetRequiredString("controller"); string view = this.requestContext.RouteData.GetRequiredString("action"); view = view.Replace("-",""); this.requestContext.RouteData.Values["action"] = view; IController controller = null; IControllerFactory factory = null; try { factory = ControllerBuilder.Current.GetControllerFactory(); controller = factory.CreateController(this.requestContext,controllerId); if (controller != null) { controller.Execute(this.requestContext); } } finally { factory.ReleaseController(controller); } } 我不知道我是否以最好的方式实现它,这或多或少取自我遇到的第一个sample.我自己测试了代码,所以这确实呈现了正确的操作/视图,应该可以解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Visual studio – 在浏览器中查看时使用子文件夹
- asp.net-mvc – ASP.Net MVC和WebAPI加密
- 基于声明的身份 – 在asp.net MVC5 EF6中使用流畅的api映射
- asp.net-mvc – ASP.NET MVC现在是“开源”.这是一件好事吗
- ASP.NET Core 中断请求了解一下(翻译)
- 将搜索框添加到ASP.Net动态数据列表页面
- asp.net-mvc – asp.net mvc输入/模型验证多语言
- asp.net-web-api – WebApi:如何将状态从过滤器传递给控制
- asp.net-mvc – Ajax重定向到页面而不是更新目标
- asp.net-mvc – 如何使用ASP.NET MVC实现自定义缓存提供程序
- asp.net-mvc – 如何从knockout mvc cart样本计算
- asp.net-mvc – 在ServiceStack服务上进行身份验
- asp.net – 为什么HttpContext.Response.Cookies
- asp.net-mvc – ASP.NET MVC:如何在localhost上
- asp.net-ajax – CollapsiblePanelExtender设置已
- 如何追踪每一笔记录的来龙去脉:一个完整的Audit
- asp.net – 为什么IIS 7.5在重启后重新编译整个网
- ASP.NET Forms身份验证超时
- asp.net-mvc – 模型绑定到MVC 3中可能存在非顺序
- asp.net – coldfusion和.net上的单点登录