谢谢你们的指导和解决方案。解决方案是您所有建议的组合,因此我决定将其汇总在一篇文章中。
解决问题的方法如下:
contentType
应该是application/json
(如上面的Ant P建议)- json数据应采用
JSONString3 = {"Name" : "monday" }(如上面的Ant P所建议的)形式 - 在发送给控制器之前,json应该
stringifyed
如下所示:(JSONString3 = JSON.stringify(JSONString3)
按照Quan的建议)
客户端javascript
function getChart() { JSONString3 = { "Name" : "monday" }; jQuery.ajaxSettings.traditional = true; $.ajax({ url: "@Url.Action("getChart","SBM")", type: 'POST', contentType: 'application/json', dataType: 'html', data: JSON.stringify(JSONString3), success: function (data) { var imagestring = btoa(data); $('#ChartImage').attr('src', "data:image/png;base64," + imagestring + "?" + new Date().getTime()); } }) jQuery.ajaxSettings.traditional = false; }MVC控制器
[Authorize][HttpPost]public ActionResult getChart(YAxis HAxis){ YAxis XAxisvalue = HAxis; Charts chart = new Charts(); MemoryStream ms = new MemoryStream(); chart.Chart.SaveImage(ms); string image = Convert.Tobase64String(ms.GetBuffer()); return File(ms.GetBuffer(), "image/png", "Chart.png");}模型
public class YAxis{ public string Name { get; set; }}代替这个:
JSONString3 = { "Name" : "monday" };我们可以完成这个:
var JSONString3 = {};JSONString.Name = "monday";但是我们仍然需要在将对象发布到控制器之前对对象进行字符串化处理!!!
要将多个对象传递给控制器,下面是示例
客户端javascript
function getChart() { //first json object //note: each object Property name must be the same as it is in the Models classes on server side Category = {}; Category.Name = "Category1"; Category.Values = []; Category.Values[0] = "CategoryValue1"; Category.Values[1] = "CategoryValue2"; //second json object XAxis = {}; XAxis.Name = "XAxis1"; XAxis.Values = []; XAxis.Values[0] = "XAxisValue1"; XAxis.Values[1] = "XAxisValue2"; //third json object YAxis = {}; YAxis.Name = "YAxis1"; //convert all three objects to string //note: each object name should be the same as the controller parameter is!! var StringToPost = JSON.stringify({CategoryObject : Category, XAxisObject : XAxis, YAxisObject : YAxis}); $.ajax({ url: "@Url.Action("getChart","SBM")", type: 'POST', contentType: "application/json", dataType: 'html', data: StringToPost, success: function (data) { var imagestring = btoa(data); $('#ChartImage').html(data); } }) }MVC控制器
[HttpPost]public ActionResult getChart(Category CategoryObject, XAxis XAxisObject, YAxis YAxisObject){ //do some stuff with objects here and return something to client return PartialView("_Chart");}类别模型
public class Category{ public string Name { get; set; } public List<string> Values { get; set; }}XAxis模型
public class XAxis{ public string Name { get; set; } public List<string> Values { get; set; }}YAxis模型
public class YAxis{ public string Name { get; set; }}希望它能帮助某人弄清楚整个图片!



