2011-01-29 18 views
2

私はURLを持っている:http://localhost:XXXX/Details/569MVC 2 - URL短縮/ルーティング(地図ルート)

私はそれを短くしたい:http://localhost:XXXX/569

現在、私が持っている:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

だから何が変わります整数値を入力すると、HomeControllerのMy Details関数に移動します。

public ActionResult Details(int recordID) 
{ 
    /** Code Here **/ 
    return View(); 
} 

EDIT:エラー

をキャッチ。また、どのように私は、アプリケーションで発生したエラーのためにキャッチすることができますか?エラーダンプを表示するのではなく、「おっと!何かが壊れました!」というメッセージが表示されます。

答えて

3

デフォルトルートの前にこのルートを追加します。数字だけを含むURLがHomeControllerのDetailsアクションを呼び出すことを確認します。

routes.MapRoute(
    "RecordDetails", 
    "xxxx/{RecordID}", 
    new { controller = "Home", action = "Details", RecordID=0 }, 
    new { RecordID = @"\d+" }); 
+1

こんにちは。返信いただきありがとうございます。私はあなたの解決策を試しましたが、私は次のエラーがあります。彼らは: '/'アプリケーションのサーバーエラー。 リソースが見つかりません。 説明:HTTP 404。探しているリソース(またはその依存関係の1つ)が削除されているか、名前が変更されているか、一時的に使用できない可能性があります。次のURLを確認し、正しく入力されていることを確認してください。 リクエストされたURL:/ 10 –

+0

私はパラメータ名にタイプミスをしました。更新されたルートを試してください –

+0

ありがとうUfuk。それはうまくいった。これで、デフォルトでは、Details関数に直接移動し、Index関数には移動しません。 URLがhttp:// localhost:XXXX/{ここにいくつかありますか?}の場合にのみ、詳細機能に移動する方法がありますか? –