Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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
函数调用为.cshtml的Javascript变量_Javascript_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

函数调用为.cshtml的Javascript变量

函数调用为.cshtml的Javascript变量,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我有一个asp.NETMVC项目,在一个.cshtml文件中有一个jquery微调器。单击按钮时,它将获取微调器的值。我希望在.cshtml文件中获取微调器值和调用函数(C#),并将变量传递给函数 这是我在cshtml中的jquery代码。我试图实现一个ajax POST方法,用函数位于Index.cshtml(此代码所在的文件)中的间隔值调用函数“GetData” 函数GetData是这样的,因为它在cshtml中,所以它被定义为@Helper函数 @helper GetData

我有一个asp.NETMVC项目,在一个.cshtml文件中有一个jquery微调器。单击按钮时,它将获取微调器的值。我希望在.cshtml文件中获取微调器值和调用函数(C#),并将变量传递给函数

这是我在cshtml中的jquery代码。我试图实现一个ajax POST方法,用函数位于Index.cshtml(此代码所在的文件)中的间隔值调用函数“GetData”

函数GetData是这样的,因为它在cshtml中,所以它被定义为@Helper函数

       @helper GetData(int interval)
       {
           var xdata = Model.Select(model => model.Id).Take(10).ToList();
       }
ajax调用正在引发异常(异常[object])。我的主要怀疑是1)我的“数据”格式和2)url是否正确

我不局限于只考虑ajax,我对任何可以调用函数并将变量从Javascript/Jquery传递到.cshtml中的@Helper函数的方法都持开放态度(如果这确实是最好的方法),也许我应该更多地使用.cs文件,即控制器


如果您想在视图中调用函数,为什么要使用ajax?AJAX用于向服务器发送数据。在这里,您只需要在click事件中调用helper函数

就这样做吧

 $('#getvalue').on('click', function (event) {
      var interval = spinner.spinner("value");
      var result = @GetData(interval);
      if(result!=null || result!= 'undefined') {
         alert('It worked!');
      }
 }

在这篇文章中建议了一个有效的解决方案-

我已将GetData函数从cshtml中移出,并将其放在controller.cs中

    [HttpPost] // can be HttpGet
    public ActionResult GetData(int interval)
    {
        //use interval value here ...

        return Json(new { XList = strxdata, YList = strydata }, JsonRequestBehavior.AllowGet);
    }
我使用AJAX请求从cshtml调用GetData函数,然后用相同的JS代码处理返回的数据

     $.ajax({
            url: '/SController/GetData',
            type: 'POST',
            contentType: 'application/json;',
            data: JSON.stringify({ id: interval }),
            success: function (result) {
                $.each(result, function (i, item) {
                    alert(result.XList);
                    alert(result.YList);
                });
                //process the returned data here ....
                var jxArray = result.XList.split(',');
                var jyArray = result.YList.split(',');
                }
        });

我希望这对其他人有所帮助,事实上,我认为从技术上讲,将代码拆分到控制器比使用@helper函数更为正确。

当我测试此解决方案时,我遇到的错误是GetData原型中的“间隔”是“上下文之外的”。为什么要将间隔传递给GetData helper?甚至不用那个变量。
     $.ajax({
            url: '/SController/GetData',
            type: 'POST',
            contentType: 'application/json;',
            data: JSON.stringify({ id: interval }),
            success: function (result) {
                $.each(result, function (i, item) {
                    alert(result.XList);
                    alert(result.YList);
                });
                //process the returned data here ....
                var jxArray = result.XList.split(',');
                var jyArray = result.YList.split(',');
                }
        });