2013-06-21 11 views
12

LowercaseUrlsオプションをtrueに設定して、現在ASP.NET MVC 4ルーティングを使用しています。私は、この設定使用しています:パラメータに影響を与えない小文字のURL

 routes.LowercaseUrls = true; 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { 
       controller = "Inicio", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

をしかし行為の特定のセットで、私は暗号化され、大文字と小文字が区別される文字列idパラメータを持っています。その後

、私はこのようなアクションリンクを生成しよう:

@Html.ActionLink("My Text", "Action", "Controller", new { id = encryptedString }) 

URLでidパラメータは、文字列を解読しようとしているときにエラーが生じ小文字に変換されます。

URLパラメータを無視して小文字のURLにルーティングを設定することはできますか?

+0

私は確信していませんが、ルートパラメータの代わりにクエリ文字列を使用する場合は、それをそのままにしておきますか? – ryudice

+0

それはしますが、私はそれがクエリ文字列値ではないことを本当に好むでしょう。 – Meryovi

+0

IgnoreRouteの免責事項を使って独自のルートを構築することができます。これがうまくいくかどうかはわかりません。 –

答えて

10

これまでに私はこの問題に遭遇しました。私がやり遂げたのはAttributeRoutingです。

これらは(上記にリンクされた)甘い特徴がPreserveCaseForUrlParametersにあります。

もう1つのオプションはLowercaseRoutesMVCです。このシナリオでは、特定のルートを小文字にし、あなたが残したいルートをあらかじめroutes.MapRouteにすることができます。しかし、特別に構成されたものは、デフォルトのもののルート全体がそうでない場合、小文字になるので、これは乱雑になる可能性があります。

希望すると便利です。

+0

AttributeRoutingに切り替えました...うまく機能しました!ありがとう! – Meryovi

+0

AttributeRoutingはMVCロードマップにありますhttp://aspnetwebstack.codeplex.com/wikipage?title=Roadmap –

+0

リンクをありがとう! – technicallyjosh

関連する問題