0

ルーティングする前に、つまり MVC がルート構成を調べて使用するルートを見つける前に、URL を操作できますか?

たとえば、「www.test.com/ä/ö」を「www.test.com/a/o」に置き換えるなど、URL の一部の文字を置き換えたいと考えています。そうすれば、ユーザーがこれらの文字を URL に入力した場合でも、正しいルートが使用されます。

URLを操作するためにフックできるものがあるかもしれませんか?

編集: 私が欲しいものを明確にするために、例を追加します。「{controller}/{action}」のようなルーティング構成があるとします。ユーザーが www.test.com/MyCöntroller/MyÄction と入力し、それをコントローラー "MyController" とアクション メソッド "MyAction" にルーティングしたいと考えています。ルーティングが完了する前に文字の置換を行う必要があります。そうしないと、一致するルートが見つかりません。したがって、ルーティングが完了する前に、すべての「ö」を「o」に、すべての「ä」を「a」(およびその他の文字) に置き換えたいと思います。これを行う方法はありますか?

Edit2: 調査の結果、ASP.NET MVC で最初に URL を取得するのは UrlRoutingModule のようです。多分それにフックするいくつかの方法がありますか?

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 に答える