如何将js变量发送到mvc控制器

我是客户端 – 服务器编程概念的新手。 我需要的是,向我的MVC 3控制器动作发送四个js变量。

$(document).ready(function() { var $jcrop; $('#image').Jcrop({ bgColor: 'red', onSelect: refreshData }, function () { $jcrop = this; }); function refreshData(selected) { myData = { x1: selected.x1, x2: selected.x2, y1: selected.y1, y2: selected.y2 }; } }); 

所以我在浏览器中获取我的变量。

我在服务器端有的是:

  public ActionResult CreateCover(ImageCoordinates coordinates) { ViewData.Model = coordinates; return View(); } public class ImageCoordinates { public int x1 { get; set; } public int x2 { get; set; } public int y1 { get; set; } public int y2 { get; set; } } 

有没有一种简单的方法可以将我的四个参数从js发布到我的动作中? 我尝试使用$ .ajax从本网站使用几个例子

像这样

  $.ajax({ url: '/dashboard/createcover', type: 'POST', data: JSON.stringify(myData), contentType: 'application/json; charset=utf-8', success: function (data) { alert(data.success); }, error: function () { alert("error"); }, async: false }); 

但它不起作用,我在行动中收到了0 0 0 0。 但说实话,我甚至不确定如何调用这个jquery函数。 我应该通过点击按钮来呼叫它,还是在我发布表单时自动呼叫? 还有其他方法可以发送这个参数吗?

这里解决方案 –

型号 –

 public class ImageCoordinates { public int x1 { get; set; } public int x2 { get; set; } public int y1 { get; set; } public int y2 { get; set; } } 

行动 –

  public ActionResult CreateCover(ImageCoordinates coordinates) { return null; } 

让我们创建一个View,它将对Action进行AJAX调用。

    

输出 –

在此处输入图像描述

尝试更改传递给控制器​​的对象的名称:

 $.ajax({ url: '/dashboard/createcover', type: 'POST', data: {coordinates : JSON.stringify(myData)}, //change here contentType: 'application/json; charset=utf-8', success: function (data) { alert(data.success); }, error: function () { alert("error"); }, async: false }); 

请注意,这会将值作为JSON对象发布。 您需要像这样修改控制器:

 public ActionResult CreateCover(string jsonCoordinates) { ImageCoordinates coordinates = JsonConvert.DeserializeObject(jsonCoordinates); ViewData.Model = coordinates; return View(); } 

您还需要添加对Newtonsoft.Json的引用。