0

asp.net MVC3 での限られた (2 週間) の経験では、ほとんどのアクション メソッドで、ルート登録を追加する必要はありませんでした。しかし、アクション メソッドに入力パラメーターがある場合、www.mysite.com/myController/myAction/myParameter1/myParameter2/myParameter3 の形式の URL (? マークなし) を使用してメソッドにアクセスできないことに気付きました。ルートをマッピングします。それが本来あるべき姿ですか?

4

2 に答える 2

2

デフォルトでは、すでにルートが登録されています。

routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

id という名前の 1 つのパラメーターを受け入れるため、アクションは次のようになります。

public ActionResult MyAction(string id)

リクエストを「キャッチ」します:

www.mysite.com/MyController/MyAction/parameter_value

id値「parameter_value」を取得します。

複数のパラメーターが必要な場合 (またはパラメーターが「id」以外の名前でなければならない場合)、新しいルートを登録する必要があります。

パラメータが 2 つある場合は、次のようにルートを登録します。

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

あなたの行動は次のようになります:

public ActionResult MyAction(string parameter1, int? parameter2)
于 2012-08-06T00:31:47.267 に答える
1

はい、要件に応じてルートをカスタマイズしてルートを登録する必要がありglobal.asaxます。次の方法でルートを登録する必要があります。

routes.MapRoute(
            "routeName",                                              // Route name
            "{controller}/{action}/{myParameter}",                           // URL with parameters
            new { controller = "Home", action = "Index", myParameter= "" }  // Parameter defaults
        );

したがって、上記のルートを使用すると、URLが上記の形式になるたびに、直後のパラメーターがパラメーター"action/"として取得されます.....

URL に複数のパラメーターがある場合は、次のように登録できます。

routes.MapRoute(
            "routeName",                                              // Route name
            "{controller}/{action}/{myParameter1}/{myParameter2}/{myParameter3}",                           // URL with parameters
            new { controller = "Home", action = "Index", myParameter1= "", myParameter2= "", myParameter3= "" }  // Parameter defaults
        );
于 2012-08-06T00:33:18.327 に答える