web-dev-qa-db-ja.com

ASP.NET MVC URLルートにハッシュ値を含める

ハッシュ値を実装する必要があります。つまり、Urlは次のようになります。

/ home/index /#create

このためにルートを追加しました:

routes.MapRoute(
    "Default",    // Route name
    "{controller}/{action}/#{detail}",    // URL with parameters
    new { controller = "Login", action = "LogIn",  detail  =""}  // Parameter defaults
);

アクセス時/home/index/#create、デフォルトルートにリダイレクトされます。

これをどのように行うことができますか?

54
facebook

サーバー上の#シンボルの後の値をフェッチすることはできません。単にこの値がサーバーに送信されないからです。クライアント側のjavascriptのみがこれにアクセスできるため、ハッシュを使用してルートを定義しても意味がありません。

51
Darin Dimitrov

前述のように、ルーティングを使用してこれを行う方法はありません。唯一可能な解決策は、コントローラーのアクションでリダイレクトするときにURLに#フラグメントを追加することです。例えば。

return Redirect(Url.Action("Index", "Home") + "#create");
107
Rory McCrossan

ブラウザーがURLを要求すると、ハッシュの後にサーバーに何も送信されません。このルートを使用すると、ハッシュ値を含むURLをgenerateルーティングできますが、ユーザーがそのようなURLに移動するときにserver-sideを実行する方法はありません。それはまさにウェブの仕組みです...

7
Robert Levy