将参数传递给方法

时间:2018-01-10 09:22:51

标签: c# asp.net asp.net-mvc

我有js代码,我通过参数将数据传递给repo方法。

这是回购方法:

public List<SpeedLimitViewModel> GetSpeedData(decimal imei, DateTime start, DateTime end)
    {
        using (TraxgoDB ctx = new TraxgoDB())
        {
            List<SpeedLimitViewModel> alldata = new List<SpeedLimitViewModel>();
            var alllogs = ctx.Logging.OrderByDescending(x => x.LogID).ToList();

            for (int i = 1; i < alllogs.Count; i++)
            {
                alldata.Add(new SpeedLimitViewModel
                {
                    Imei= alllogs[i].Imei,
                    Latitude2 = alllogs[i].Latitude,
                    Longitude2 = alllogs[i].Longitude,
                    Speed = alllogs[i].Speed
                });
            }
            return alldata;
        }


    }

我在控制器中将此方法称为:

  public JsonResult SpeedData()
    {
        var speeddata = repoEntities.GetSpeedData();
        return Json(speeddata.ToArray(), JsonRequestBehavior.AllowGet);
    }

但我有错误

  

严重级代码描述项目文件行抑制状态   错误CS7036没有给出对应于'ReportsRepositoryEntities.GetSpeedData(decimal,DateTime,DateTime)所需的形式参数'imei'的参数Traxgo.TrackerWeb C:\ Users \ EugeneSukhomlyn \ Source \ Workspaces \ TraxgoWeb \ Traxgo.TrackerWeb \ Controllers \ ReportsController.cs 94 Active

我的问题在哪里?

3 个答案:

答案 0 :(得分:3)

您的方法如下:

GetSpeedData(decimal imei, DateTime start, DateTime end)

然而你这样称呼它:

GetSpeedData()

此外,我不会在您的方法中的任何位置看到您使用imeistartend,因此您可能应该从方法定义中删除它们

所以你应该把参数传递给你的函数,可能来自你的控制器方法,如下所示:

public JsonResult SpeedData(decimal imei, DateTime start, DateTime end)
{
    var speeddata = repoEntities.GetSpeedData(imei, start, end);
    return Json(speeddata.ToArray(), JsonRequestBehavior.AllowGet);
}

或者参数不是来自控制器方法,而是来自其他地方 - 无关紧要,在您当前的设计中,您必须将定义的参数传递给GetSpeedData函数。

或者你可以像这样定义你的函数(使用可选参数):

public List<SpeedLimitViewModel> GetSpeedData(decimal imei = 0, DateTime start = new DateTime(), DateTime end = new DateTime())
{
}

您甚至可以通过调用GetSpeedData()来调用它(所有参数都将值作为可选参数的默认值提供)

答案 1 :(得分:3)

public JsonResult SpeedData(decimal imei, DateTime start, DateTime end)
    {
        var speeddata = repoEntities.GetSpeedData(imei, start, end);
        return Json(speeddata.ToArray(), JsonRequestBehavior.AllowGet);
    }

答案 2 :(得分:0)

您需要删除函数的参数,或者您需要在方法定义中设置默认值,如Paweł所提到的,或者最后您可以将方法默认重载为包含和不包含参数的版本。