栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将JSON发送到控制器时,ASP.NET MVC 4控制器参数始终为null,为什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将JSON发送到控制器时,ASP.NET MVC 4控制器参数始终为null,为什么?

谢谢你们的指导和解决方案。解决方案是您所有建议的组合,因此我决定将其汇总在一篇文章中。

解决问题的方法如下:

  1. contentType
    应该是
    application/json
    (如上面的Ant P建议)
  2. json数据应采用
    JSONString3 = {"Name" : "monday" }
    (如上面的Ant P所建议的)形式
  3. 在发送给控制器之前,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; }}

希望它能帮助某人弄清楚整个图片!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号