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
  );

就是这样!我猜你必须在公共 actionresult 中使用 id 的名称(int id //must be ID HERE like global.asax)

重现我的问题的步骤:
1.新建一个mvc3应用
2. 进入主控制器并放入 Index(int?x){ return view()}
3. 运行应用程序
4.进入url中的url类型 http://localthost:someport/Home/Index/1
5.在控制器中插入断点查看x的值
6. 请注意,即使您将 url 放在 x 上方,也不会像假设的那样等于 1!

我只是不明白为什么我在 id 中得到一个空值....

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

我在浏览器中输入以下网址 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)”的不可为空类型“System.Int32”的参数“MvrId”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:parameters 描述:当前web请求执行过程中发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:参数字典包含“MedicalVariance.Controllers”中方法“System.Web.Mvc.ActionResult Index(Int32)”的不可为空类型“System.Int32”的参数“MvrId”的空条目。医学管理控制器”。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数

4

1 回答 1

2

确保在默认路由之前定义您的路由。

于 2012-01-05T22:13:01.680 回答