ActionResult参数以null形式出现

时间:2014-03-10 23:14:19

标签: asp.net asp.net-mvc

我已经看到了几个相关的问题,但我似乎无法解决我的确切实例。我有一个网址,例如http://127.0.0.1/UTS/Unit/J0000001。也就是说,我的控制器是UTS,我的操作是Unit,并且有一个可选参数c_number

我的路线配置如下:

  routes.MapRoute(
    name: "Unit",
    url: "{controller}/{action}/{c_number}",
    defaults: new { controller = "UTS", action = "Unit", c_number = "" }
  );

然后,我的操作在我的控制器中:

    public ActionResult Unit(string c_number)
    {
        UnitViewModel uvm = new UnitViewModel();
        uvm.unit = pacificRepo.Units.FirstOrDefault(g => g.c_number == c_number);
        uvm.geoLocation = pacificRepo.GeoLocations.FirstOrDefault(g => g.geo_location.Latitude == uvm.unit.geo_location.Latitude && g.geo_location.Longitude == uvm.unit.geo_location.Longitude);
        return View(uvm);
    }

每当我转到上面提到的示例网址时,c_number都会显示为null。它应该是J0000001。有没有人看到我失踪的明显明显的东西?

1 个答案:

答案 0 :(得分:1)

由于您在Route中定义了它,因此无需为c_number添加参数。您可以从RouteData字典中获取值。c_number参数仅当您将QueryString http://someurl.com/UTS/Unit?c_number="J0000001"作为public ActionResult Unit() { var cNumber = RouteData.Values["c_number"].ToString(); } 传递时才有价值

{{1}}