我有一个特定的路由需求,我无法工作。在StackOverflow中,我发现了很多答案,这些答案带给我一些启发,但不是全部。用破折号和非英文字符路由
林命名我的控制器和动作标准C#的方式,即每个单词的第一个字母大写:
MyController.MyAction()
为了达到这一操作方法,我倒是像所有这些URL的工作:
/my-controller/my-action
/my-cöntroller/my-äction
/MyController/MyAction
/MyCöntroller/MyÄction
(这两个最后的是不是超级重要,虽然...)
所以这里有两件事情:
- 破折号可用于分离的话(为了可读性和SEO 目的)。
- 可以使用一些非英文字符(所有替换 指定 - 没有“魔术”)。
我想创建一个助手这样的环节:即标准方式
@Html.ActionLink("My link text", "MyController", "MyAction")
,这将创建下列链接:
/my-controller/my-action
希望这可以在没有完成这使得我的路由配置过于混乱(例如,对于每个动作或某事都有一条路由),或者将属性放在所有动作方法上,但如果这是我想知道的唯一解决方案。
我到目前为止所尝试的是实现一个覆盖GetRouteData()和GetVirtualPath()的自定义路由类。它让我更接近但并不是所有的方式,但我可能会做错的事
我有一个想法,通过在执行路由之前进行替换来解决非英文字符的问题,但是我没有找到尚未完成的方法(see this question)。
如果有人能够帮助我,或者至少指出我的方向正确,我会非常感激! :)
编辑:请注意,上面的示例网址只是为了描述我想要的内容。实际上有很多网址必须被处理,所以我更喜欢一些通用的解决方案,而不是一个涉及每个动作的路径或类似的东西。
Thanks for the答案asb,但这不适合我。我会有很多网址,并且有/无非英文字符等的组合会迫使我使用此解决方案获得大量路线。另外,每次添加新操作时,我都必须添加新路线。我已更新我的描述以澄清此问题。 – haagel 2013-04-26 09:25:37