2013-02-25 104 views
0

我想向默认的MvcHandler添加一些功能。发生什么事情是:我想破解URL而不是Pascal Case URL。换句话说,如果我的控制器是SomeController,我希望URL是/ some-controller而不是/ SomeController。扩展ASP.NET MVC 4 MvcHandler

我最好的解决方法是:我创建了一个映射文件URLMappings.xml,它将每个控制器映射到每个所需的URL。然后,我扩展了默认的Route类,根据这个和默认的RouteHandler生成外发url,以了解基于此的url。那么,这工作正常,因为即使没有创建一些映射,那么框架将使用默认行为。

我的观点是:有了这个路由系统了解这两种网址,这导致重复的内容SEO问题。我想然后执行以下操作:

  1. 获取控制值
  2. 看看一些映射控制器名称值
  3. 如果匹配相匹配,那么还有比这是输入的一个部分最好网址,应该返回404.

我在网上搜索过,唯一的办法就是创建一个新的IHttpHandler。不过我不想从头开始,因为我需要所有的MVC功能。我只是想把这个逻辑放在ProcessRequest上,但是我的超级版本的方法没有被执行。

有人可以给我一些关于如何处理这个问题的想法吗?对不起,如果这个问题很愚蠢,或者它不是很详细。如果需要更多信息,请告诉我。

回答

1

您不需要自定义MvcHandler,而是自定义Route。已经有一个名为LowercaseRoutesMVC的NuGet软件包。随意下载它,探索source code并根据需要进行调整(把短划线放在任何你想放的地方)。

+0

谢谢@Darin,我来看看。我认为这解决了我的问题。 – user1620696 2013-02-25 16:06:18