0

我可以在路由之前操纵 url,即在 MVC 通过我的路由配置找到要使用的路由之前。

我想替换 url 中的一些字符,例如“www.test.com/ä/ö”到“www.test.com/a/o”。这样,如果用户在 url 中键入这些字母,仍然会使用正确的路线。

也许我可以使用一些东西来操纵网址?

编辑: 为了澄清我想要的内容,我将添加一个示例。假设我有一个如下所示的路由配置:“{controller}/{action}”。用户键入 www.test.com/MyCöntroller/MyÄction,我想将其路由到控制器“MyController”和操作方法“MyAction”。我必须在路由完成之前进行字符替换,否则将找不到匹配的路由。因此,我想在路由完成之前用“o”替换所有“ö”,用“a”(以及更多字符)替换所有“ä”。有没有办法做到这一点?

Edit2: 经过一些研究,似乎是 UrlRoutingModule 是第一个在 ASP.NET MVC 中获取 url 的。也许有一些方法可以解决这个问题?

4

2 回答 2

1

通过创建自定义路由处理程序,可以在这篇文章中掠夺。

using System.Web.Routing; 
namespace My.Services
{
    public class MyRouteHander : IRouteHandler
    {
     ApplicationDbContext Db = new ApplicationDbContext();
     public IHttpHandler GetHttpHandler(RequestContext requestContext)
     {
         // Get route data values
         var routeData = requestContext.RouteData;
         var action = routeData.GetRequiredString("action");
         var controller = routeData.GetRequiredString("controller");

         //modify your action name here

             requestContext.RouteData.Values["action"] = actionName;
             requestContext.RouteData.Values["controller"] = "SpecialController";

         return new MvcHandler(requestContext);
     }
 }

}

于 2014-10-13T10:24:57.063 回答
0

查看这个问题的答案。

基本上你会想要使用FilterAttributewith IActionFilter,然后将注释应用到为路由提供服务的 ActionResult 。这样,您就有了一种中间方法来在路由配置处理 URL 之前对其进行操作。

于 2013-04-24T16:13:59.253 回答