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 MVC 3中的c# – @ Html.ActionLink
- asp.net – asmx webservices与REST兼容?
- asp.net – 什么是连接池?
- asp.net-mvc – AntiForgeryToken登录后无效
- asp.net-mvc-3 – 无效的匿名类型成员声明符 必须使用成员分
- asp.net-mvc – ASP.NET MVC FluentValidation PartialView
- RavenDB ASP.NET会话提供程序?
- asp.net-mvc – SquishIt vs. MVC 4.0 Bundler
- asp.net-mvc – 强大的html帮助程序,具有不同的get和post模
- IIS7返回的日期标头是错误的
- asp.net-mvc – 使用Castle Windsor在ASP.NET MV
- asp.net-mvc – 如何在asp.net mvc中的url中添加
- SimpleModal打破ASP.Net回传
- asp.net-mvc – Visual Studio在剃刀语句中显示语
- asp.net – 发布网站时,我的默认文档名称不断从I
- asp.net-mvc – 如何确定视图是否为ASP.NET MVC中
- Forms身份验证应用程序中的ASP.NET Web服务
- 当会话状态超时在asp.net mvc中完成时,如何重定向
- asp.net-mvc – 从视图重定向到另一个视图
- 在ASP.NET Web应用程序中有未处理的异常是否可以
