私はMVC4を学習していますが、このURLにアクセスすると、コントローラーのEdit()メソッドに44の整数が渡されるはずだと理解しています。確かに、私がここに行くとき:
http://localhost:51921/TrackerJob/Edit/44
...このメソッドが呼び出されます:
public ActionResult Edit(int trackerJobId = -1)
{
Debug.WriteLine(trackerJobId);
}
...ただし、パラメータは常に-1です。私はこれを別のプロジェクトで機能させましたが、何らかの理由で、このプロジェクトでは常に-1です。2つのプロジェクトの間に、1つが機能するプロジェクトと、この1つが失敗するプロジェクトの違いはわかりません。メソッドシグネチャをこれに変更すると、次のようになります。
public ActionResult Edit(int trackerJobId)
{
Debug.WriteLine(trackerJobId);
}
エラーが発生します:
The parameters dictionary contains a null entry for parameter 'trackerJobId' of non-nullable type 'System.Int32'
何か案は?何をチェックすればいいのかわからない...
編集-リクエストに応じてルートを含む*
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}