2

解決

ルート

 routes.MapRoute(
      "Whatever", // Route name
      "{controller}/{action}/{id}", //{ID} MUST BE USED IN YOUR CONTROLLER AS THE PARAMETER 
      new { controller = "MyController", action = "MyActionName", id = UrlParameter.Optional } // Parameter defaults
  );

以上です!public actionresult(int id //must be ID HERE like global.asax) で ID の名前を使用する必要があると思います。

私の問題を再現する手順:
1. 新しい mvc3 アプリケーションを作成する
2. ホーム コントローラに移動し、Index(int? x){ return view()} を配置します。
3. アプリケーションを実行する
4. URL http://localthost:someport/Home/Index/1 の URL タイプに移動します。
5.コントローラーにブレークポイントを挿入して、xの値を確認します
6. x の上に URL を入力しても、想定どおりに 1 に等しくないことに注意してください。

IDにnullを取得する理由がわかりません....

 public ActionResult MyActionName(int? id)
    {
       //the id is null!!!!!!!!!!!! event thought i just entered the url below!
    }

ブラウザに次の URL を入力します http://locahost/MyController/MyActionName/1

//これもglobal.asaxに入れましたが、実際には役に立ちません。

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

と!私が入れた場合の私のエラー

  public ActionResult MyActionName(int id)
        {
           //the id is null!!!!!!!!!!!! event thought i just entered the url below!
        }

上記の例は簡単にするために作成されたものであることに注意してください。このエラーは実際のアプリケーション用です。

「/」アプリケーションでサーバー エラーが発生しました。

パラメーター ディクショナリには、'MedicalVariance.Controllers.MedicineManagementController' のメソッド 'System.Web.Mvc.ActionResult Index(Int32)' の null 非許容型 'System.Int32' のパラメーター 'MvrId' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメーター名: parameters 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentException: パラメーター ディクショナリには、'MedicalVariance.Controllers. MedicineManagementController'. オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ

4

1 に答える 1

2

ルートがデフォルトルートの前に定義されていることを確認してください。

于 2012-01-05T22:13:01.680 に答える