我正在学习 MVC 4,据我了解,转到此 URL 应该将 44 的 int 传递给控制器的 Edit() 方法。确实,当我去这里时:
http://localhost:51921/TrackerJob/Edit/44
...这个方法被调用:
public ActionResult Edit(int trackerJobId = -1)
{
Debug.WriteLine(trackerJobId);
}
...但参数始终为-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 }
);
}
}