我有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
我的问题在哪里?
答案 0 :(得分:3)
您的方法如下:
GetSpeedData(decimal imei, DateTime start, DateTime end)
然而你这样称呼它:
GetSpeedData()
此外,我不会在您的方法中的任何位置看到您使用imei
或start
或end
,因此您可能应该从方法定义中删除它们
所以你应该把参数传递给你的函数,可能来自你的控制器方法,如下所示:
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ł所提到的,或者最后您可以将方法默认重载为包含和不包含参数的版本。