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