Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 剑道UI-名称';工作清单';在当前上下文中不存在_Javascript_Asp.net Mvc_Kendo Ui_Kendo Grid_Kendo Asp.net Mvc - Fatal编程技术网

Javascript 剑道UI-名称';工作清单';在当前上下文中不存在

Javascript 剑道UI-名称';工作清单';在当前上下文中不存在,javascript,asp.net-mvc,kendo-ui,kendo-grid,kendo-asp.net-mvc,Javascript,Asp.net Mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我收到一个错误,我试图填充剑道网格的当前上下文中不存在名称“作业列表”。我的视图JavaScript代码如下所示: var GridName = "#DetailsGrid2_" + MS_MasId; var JobList = []; var data = $(GridName).data("kendoGrid").dataSource._data; for (i = 0; i < data.length; i++) { JobList.

我收到一个错误,
我试图填充剑道网格的当前上下文中不存在名称“作业列表”。我的视图JavaScript代码如下所示:

    var GridName = "#DetailsGrid2_" + MS_MasId;
    var JobList = [];
    var data = $(GridName).data("kendoGrid").dataSource._data;
    for (i = 0; i < data.length; i++) {
        JobList.push(data[i].JobId);
    }


    dataSource = new kendo.data.DataSource({
        transport: {
            read: { 
                url: '@Url.Action("GetJobs", "Jobs", new { JobId = JobList})',
                contentType: "application/json",                    
            },              

        ........
var GridName=“#DetailsGrid2”+MS_MasId;
var作业列表=[];
var data=$(GridName).data(“kendoGrid”).dataSource.\u data;
对于(i=0;i
我只想将数组
作业列表
传递给MVC控制器,但我不能这样做。请检查我的代码并更正我。

我找到了答案

dataSource = new kendo.data.DataSource({
        transport: {
           read: function(options) {
              $.ajax({   
                url: '@Url.Action("GetJobs", "Jobs")',
                contentType: "application/json",    
                data : JSON.stringify({JobId : JobList}),
                Type : "POST",
                async : true,
                traditional : true
            });
            },   
    ...............         
参考:

我收到一个错误名称“作业列表”在当前上下文中不存在

并考虑到斯蒂芬的评论

@Action()是在发送到视图作业列表之前解析的服务器端代码,它是一个javascript变量,此时甚至不存在

因此,您可以对现有代码做的就是在视图中的c#代码中创建一个Json

 @{
   var JobListJson = Newtonsoft.Json.JsonConvert.SerializeObject(JobList);
  }
 var jobList = JSON.parse(@Html.Raw(Json.Encode(JobListJson)));
然后在javascript块中,您可以通过从这个c#变量读取数据来创建一个变量,如下所示

 @{
   var JobListJson = Newtonsoft.Json.JsonConvert.SerializeObject(JobList);
  }
 var jobList = JSON.parse(@Html.Raw(Json.Encode(JobListJson)));
现在您有了一个包含数组数据的jquery变量


注意:您必须使用Nuget提供的Newtonsoft.Json进行此操作。

@Url.Action()
是在发送到视图之前解析的服务器端代码
作业列表
是一个javascript变量,那么它在那一点上根本不存在。
作业列表
是作业ID的javascript数组元素。我只想将其传递给我的控制器。类似于:
public JsonResult GetJobs(int[]JobID)….
用户可以手动构建url-
../GetJobs?JobID=1&JobID=2&JobID=3
或使用
读取的
数据:
选项(在这种情况下,它将只是
url:'@url.Action(“GetJobs”,“Jobs”)“,
我试过使用
数据
选项,但它只是发送
null
值。然后你显然做错了:)