我有一个asp.net MVC项目,在一个.cshtml文件中我有一个jquery微调器。单击按钮时,它将获取微调器的值。我希望在.cshtml文件中获取微调器值并调用函数(C#)并将变量传递给函数。
这是我在cshtml中的jquery代码。我正在尝试实现一个ajax POST方法来调用函数" GetData"使用函数位于Index.cshtml(此代码所在的文件)的区间值
$('#getvalue').on('click', function (event) {
var interval = spinner.spinner("value");
// Make the ajax call
$.ajax({
type: "POST",
url: "@Url.Action("GetData", "Index")",
contentType: "application/json; charset=utf-8",
data: interval,
dataType: "json",
success: function (result) {
alert('It worked!');
},
error: function(exception){alert('Exeption:'+exception);
}
});
});
GetData函数是这样的,因为它在cshtml中,所以它被定义为@Helper函数
@helper GetData(int interval)
{
var xdata = Model.Select(model => model.Id).Take(10).ToList();
}
ajax调用抛出异常(Exception [object Object])。我不能工作的主要嫌疑人是1)我的"数据"格式和2)" url"是正确的。
我不仅限于考虑ajax,我对任何可以调用函数的方法都开放,并将变量从Javascript / Jquery传递到.cshtml中的@Helper函数(如果确实这是最好的方法),也许我应该更多地使用.cs文件,即控制器?
非常感谢任何帮助和指导。
答案 0 :(得分:1)
此帖子提出了有效的解决方案 - asp.net mvc3 return multiple json list
我已将我的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函数在技术上更正确。
答案 1 :(得分:0)
如果要在视图中调用函数,为什么要使用ajax? AJAX用于向服务器发送数据。这里,你只需要在点击事件中调用辅助函数。
就这样做。
$('#getvalue').on('click', function (event) {
var interval = spinner.spinner("value");
var result = @GetData(interval);
if(result!=null || result!= 'undefined') {
alert('It worked!');
}
}