在 .NET MVC 4.0 URL 结构中强制使用连字符

2023-12-07

我正在专门寻找一种自动连接 CamelCase 操作和视图的方法。也就是说,我希望不必实际重命名我的视图或向站点中的每个 ActionResult 添加装饰器。

到目前为止,我一直在使用routes.MapRouteLowercase, 如图所示here。这对于 URL 结构的小写部分非常有效,但对于连字符则不然。所以我最近开始玩规范化(通过 NuGet 安装),但它还没有任何连字符。

我正在尝试...

routes.Canonicalize().NoWww().Pattern("([a-z0-9])([A-Z])", "$1-$2").Lowercase().NoTrailingSlash();

我的正则表达式肯定按照我想要的方式工作,只要正确地重构 URL,但这些 URL 当然不会被识别。文件还在ChangePassword.cshtml,例如,所以/account/change-password不会指出这一点。

顺便说一句,我对 .NET MVC 还是有点生疏。我已经好几年没有使用它了,而且从 v2.0 开始就没有使用过它。


这可能有点乱,但如果您创建了一个自定义HttpHandler and 路由处理程序那么这应该可以防止你不得不重新命名你的所有观点和行动。您的处理程序可以从请求的操作中删除连字符,这会将“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我碰到。我自己测试了代码,因此这确实呈现了正确的操作/视图并且应该可以解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .NET MVC 4.0 URL 结构中强制使用连字符 的相关文章

  • 使用 AJAX 加载的 Javascript 和 MVC4 部分视图

    我有一个 ASP NET MVC 4 视图 可以动态地将两个嵌套部分加载到 div 通过 JQuery AJAX 调用的元素 每个部分都有一大堆自己的 Javascript 为了让它全部正常工作 我目前将所有 Javascript 都放在s
  • 纠正我在 mvc 中的 url 路由

    在我的 global asax 文件中 我有一个注册路由 routes MapRoute Default Route name controller action id URL with parameters new controller
  • ServerManager 构造函数在测试环境中崩溃

    我正在 MVC 4 中构建一个控制应用程序 遇到了一个非常烦人的问题 当我在本地调试项目时 它工作正常 但是 当我将项目部署到测试服务器 Windows Server 2008 R2 时 出现以下换行符 ServerManager mana
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 如何在 Asp.NET MVC 中使用 RedirectToAction() 传递多个对象?

    我想使用redirectToAction 方法传递多个对象 下面是我重定向到的操作结果 public ActionResult GetEmployees Models Department department Models Categor
  • asp.net mvc 4:向 Scripts.Render 路径添加参数

    我想做以下事情 Scripts Render bundles jquery version 1 版本值必须是动态的并且应该与 cookie 中定义的值匹配 如何将此参数添加到 Scripts Render 我用 jQuery 尝试过类似的方
  • 多态 MVC 视图

    因此 我在 ASP NET MVC 中制作一个注册页面 其中有一个字段列表 该列表会根据许多条件 从数据库中获取 而变化 在每次更新数据库时不更改代码的情况下 在视图上显示这些字段的最佳方法是什么 我正在考虑的当前系统是制作一个带有 名称
  • 在 MVC 类上创建主键字段

    我是 MVC 和 C 新手 我只是偶然发现它并发现它很有趣 我遇到了一个不允许我继续的问题 这是我的代码 using System using System Collections Generic using System Linq usi
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • 带或不带虚拟目录的 CssRewriteUrlTransform

    我们在我们的网站中使用 MVC 捆绑 CssRewriteUrlTransform确保图像 url 可在动态捆绑 css 文件中使用 但这仅在不使用虚拟目录时有效 即 http localhost VirttualDir不起作用但是http
  • 十六进制值 0X03 是无效字符

    这是一个网页的源码 p Da 32 brow 35 a G rn x3 icza p p 我需要浏览此页面并复制显示的文本 之后 我将此文本粘贴到 ASP NET MVC 应用程序的输入文本框中 以便在数据库中创建新记录 布局页面的元字符集
  • 使用 CSS 和 JQuery 创建组织结构图结构

    I was checking on stack forum Trees in Twitter Bootstrap https stackoverflow com questions 11167628 trees in twitter boo
  • 使用 asp.net mvc 4 的简单注入器,从另一个程序集加载控制器

    我正在开发一个 asp net mvc 4 站点 使用 Simple Injector 作为 Ioc 工具 这将是一个可插拔的架构 某些控制器和视图位于另一个程序集中 另一个 mvc4 应用程序 Plugin Web dll 从主应用程序中
  • 如何在 MVC4 的 UserProfile 中创建自定义附加字段

    我遇到了新的 ASP MVC 4 功能 它附带了新的成员资格数据库模式和新的初始化 在 mvc 3 和旧版本中 开发人员能够使用 web config 中的规范创建自定义用户配置文件字段 但现在我面临默认 mvc 4 项目中过滤器命名空间中
  • MVC 4 IntelliSense 无法在 Visual Studio 2010 的 Razor 中工作

    我将 Visual Studio 2010 与 ASP NET MVC4 一起使用 并且 IntelliSense for Razor 语法在应用程序的视图中对我不起作用 我能做些什么 还引用自 http sebnilsson com 10
  • 将查询字符串字典(或关联数组)转换为字典[重复]

    这个问题在这里已经有答案了 我正在尝试接受以下形式的查询字符串 param key1 value1 param key2 value2 并将其转换为 C MVC 4 中的字典 这在 PHP 中很简单 但我还没有找到任何在 C 中重现此操作的
  • ASP.Net MVC 4 通用主要难点

    我正在开发一个ASP NET MVC 4Web应用程序 以前我的 MVC 应用程序是使用MVC 3和这个新的MVC 4我刚刚复制 重复使用了我的应用程序认证和授权码从以前的应用程序 当用户登录我的网站时 我会执行以下操作 账户控制器 pub
  • 如何正确链接不同View之间

    我有一个master cshtml带有导航栏 我的第一个链接是另一个视图 ProjectManagement li a href Views ProjectManagement cshtml Project Management a li
  • Visual Studio 智能感知搞砸了

    所以我是 MVC4 和 C 的新手 我已经设计这个网站大约两周了 智能感知没有任何问题 两天来 Visual studio 告诉我 Viewbag 和其他 命令不是我的项目的一部分 我可能错过了一些东西 或者它告诉我 Viewbag 在当前
  • ASP.NET WebApi - 一个控制器中的多个 GET 操作

    I have Users控制器和基本 REST 模式工作得很好 不过我需要一种额外的模式users id usergroups这将返回该用户的所有用户组 实现这一点的最佳方法是什么 因为我想我将需要在更多控制器上使用类似的路由 仅使用默认值

随机推荐

  • System.Drawing 的撤消按钮?

    我正在制作一个图像编辑器 有点为了自己的享受 并且想知道如何制作一个撤消按钮来撤消我上次所做的绘画 我想知道我会如何处理这个问题 教程或示例代码会很好 或者至少能指引我正确的方向 Thanks 呵呵 撤消实际上并不像听起来那么难 这里的神奇
  • 比较双精度数返回 false

    我的数据库中有三个数字 想要在 if 语句中比较它们 我有一个简单的 convert 函数 仅返回双精度数 Public Function RetDbl ByVal obj As Variant As Double On Error Res
  • 设置在 Foreach 循环中默认选中的 RadioButtonFor()

    我有一个奇怪的行为使用 Html RadioButtonFor扩展方法 我正在使用 foreach 循环创建 RadioButton 和 By 三元运算符的列表 我试图将尊重条件的人设置为检查 但它总是最后一个被检查的人 我搜索了类似的问题
  • 如何创建类似于 Twitter 应用程序位置切换按钮的切换按钮?

    我应该使用什么自定义按钮 可以左右滑动 例如 Android 的 Twitter 应用程序上的打开 关闭位置按钮 如下图所示 还有创建此类按钮的任何链接或指南 Thanks 使用一个简单的切换按钮结合一个可绘制状态列表设置为其背景 的一个样
  • 如何在R包RecordLinkage中使用compare.linkage——意外的输出

    我正在使用R包RecordLinkage中的compare linkage函数 得到的结果我知道是错误的 所以我知道我误解了一些东西 我正在使用适用于 x64 Windows 的 R 3 2 3 我对 Stata 非常熟悉 但对 R 不太熟
  • 在 Powershell 中计算日志结果

    我有一项任务 必须从 Windows 安全日志文件中提取 审核失败 和 审核成功 等信息 并计算每个 ex 的结果 总尝试次数 成功次数 失败次数和最常见的事件 ID 我将 csv 保存到桌面以获取信息 但我不确定如何获取每个文件的运行总计
  • 有关 Django 中字段类型的问题

    我是 Django 新手 我想在 Django 中制作一个用户注册表单 创建模型时 我为密码字段提供了 fieldtype gt PasswordField 但是当我将此模型运行到终端时出现错误 password models Passwo
  • Angular 2 - 如何将数据传递给子组件而不渲染子组件两次?

    我想将一个对象从 app component 传递到子组件 home component 我是否使用了错误的路由方式 这就是为什么我想要将对象传递给的子组件被渲染两次 我怎样才能避免它 我想这也可能是第二次渲染组件时该对象未定义的原因 我已
  • Magento 1.9.2.1 自定义模块 404

    我最近安装了 Magento 的干净版本 我有一个自定义模块 它在旧模块上运行得很好 但在新模块上却不起作用 都是 1 9 2 1 它显示在 系统 gt 配置 gt 高级 gt 高级 下 每当我尝试调用 mydomain index php
  • 如何解决“参数必须是实现 Countable 的数组或对象?” [复制]

    这个问题在这里已经有答案了 警告 count 参数必须是数组或对象 在 C xampp htdocs try process php 第 30 行实现 Countable 这就是我的代码所说的 看起来很好 但是当我按编辑时 会显示此错误 我
  • 如果声明但未初始化对象的变量是否会使用内存空间?

    我有一个类 我想使用大约十到十万个 因此 我不想不必要地浪费内存位置 仅在其中少数 如果是 我是否还有其他选择 除了将它们作为自己的类之外 来减少内存使用 这是我的代码示例 name and propability我只需要几次 public
  • 为什么我收到 java.lang.AbstractMethodError 错误?

    ABstractMethodError 的可能原因有哪些 线程 pool 1 thread 1 中的异常java lang AbstractMethodError org apache thrift ProcessFunction isOn
  • 返回 Excel VBA 宏 OneDrive 本地路径 - 可能的线索

    我有一个许多人需要访问的电子表格 在共享点上 出于某些原因 我们需要在本地执行此操作 同步 然而 由于每个用户的知识水平 不断出现问题和错误 电子表格需要具有结构和一致性 因此为了实现这一点 我创建了一个带有一组参数的用户表单 以帮助人们输
  • 如何测量应用程序或进程的实际内存使用情况?

    如何测量 Linux 中应用程序或进程的内存使用情况 摘自博客文章了解 Linux 上的内存使用情况 ps不是用于此目的的准确工具 Why ps是错的 取决于你如何看待它 ps不报告进程的实际内存使用情况 它真正做的是显示每个进程将占用多少
  • TFS 2015:发布工件 - “任务已取消”

    不久之后 我在运行构建任务 发布工件 时收到 任务已取消 tfs 服务器现在已经运行了几周 我在执行这些任务时从未遇到过问题 我通过删除构建输出文件夹解决了这个问题 但不幸的是这个 解决方法 不再起作用 我尝试更改工件名称 希望这可以改变一
  • 如何使用正则表达式从字符串中删除最后一个逗号和空格(如果有)?

    我在 C 应用程序中有一个字符串 想知道检查最后两个字符是否是的正确方法是什么 逗号和空格 并使用正则表达式删除它们 如果是 没有正则表达式的工作解决方案 string str dfsf if str EndsWith str str Re
  • Boost.Process - 如何让进程运行一个函数?

    所以我尝试做一些事情升压过程尽管它尚未被 Boost 发行版接受 最简单的程序看起来像 include
  • 读取用户会话时出现 HttpRuntime CacheInternal NULL 引用异常(反射)

    在我们的 Windows 服务器 2008R2 2012 上进行一些更新后 Asp net 应用程序抛出错误 var obj 1 typeof HttpRuntime GetProperty CacheInternal BindingFla
  • 如何调用编译后的函数体?

    当我掌握一个代码对象时 通过内部结构 例如 func code or code 在Python 3 中 有什么办法calling这段代码 简单地调用它是行不通的 def f pass f func code 结果是 Traceback mo
  • 在 .NET MVC 4.0 URL 结构中强制使用连字符

    我正在专门寻找一种自动连接 CamelCase 操作和视图的方法 也就是说 我希望不必实际重命名我的视图或向站点中的每个 ActionResult 添加装饰器 到目前为止 我一直在使用routes MapRouteLowercase 如图所