2011-01-11 8 views
1

'#'記号が含まれているURLを正しくルーティングする方法を探しています。そのようなURLの場合、私は基本的に#を無視したい。MVC2:#記号を含むURLをルーティングする必要があります

たとえば、ストア/インデックス/#/ {storeName}が、単一のパラメータ(storeName)を渡すストアコントローラのインデックスアクションにルーティングするようにします。

文字列にリテラル '#'をマッチさせようとしましたが、これは動作しません。

routes.MapRoute("RemoveHash", "Store/Index/#/{storeName}", 
      new {controller = "Store", action = "Index", storeName = UrlParameter.Optional}); 

私もそれが渡された場合、私はちょうど#を無視することができることを考え、行動(第一であること#)に2つのパラメータを持つ試してみました(アクションが呼び出されますが、StoreNameをパラメータが渡されていません) (ハッキー私は知っている)...しかし、この場合ルーティングがうまくいかず、どちらのパラメータもアクションに渡されません。

MVCルーティングシステムを使用してこれを処理することができれば、このタスクにはHttpHandlerを使用しないでください。

提案がありますか?

答えて

3

あなたがしようとしていることは不可能です。ブラウザーがサーバーに要求を送信すると、URLの#(ハッシュ)記号に続くすべてのものが完全に無視されるため、ASP.NET MVCアプリケーションはこの値を取得できません。クライアント側のjavascriptだけがこの値を読み取ることができ(window.location.hash)、AJAXリクエストと通常のURL(例:Store/Index/{storeName})を使用してサーバーに渡すことができます。

+0

お返事ありがとうございます。私は彼らが望むものは不可能であることをjavascriptの人に伝えます! – nixon

+0

私はあなたを信じていませんでしたが、私はこれをダブルクリックしてチェックし、ブラウザを離れるリクエストは#の前にURLがあります。だからもう一度 – nixon

+2

@nixon、ありがとう、HTTPリクエストは、 '# 'ハッシュを含む完全なURLを送信する必要があります。 – CallMeLaNN

関連する問題