【发布时间】:2013-12-04 19:32:16
【问题描述】:
这里已经有一些类似的帖子,并且尝试了所有建议的解决方案,但仍然无法正常工作......我无法在控制器中获取值,它始终为空。下面是代码。我错过了什么吗?
客户端javascript
function getChart() {
JSONString3 = { HAxis : [{ Name : "monday" }] };
jQuery.ajaxSettings.traditional = true;
$.ajax({
url: "@Url.Action("getChart","SBM")",
type: 'POST',
contentType: 'json',
dataType: 'html',
data: 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; }
}
【问题讨论】:
-
您是否尝试过以纯文本参数而不是 HAxis 对象的形式发布?
-
也试过了,也没用。我怀疑它与服务器端的对象名称有关。立即测试...
-
没有不工作。目前唯一有效的是这种形式的控制器:“public ActionResult getChart(string XAxis)”和以这种形式发布的数据“数据:{“XAxis”:“testValue”}”
-
我会抓取控制器中的所有内容,然后尝试传递一个字符串值。删除断点并查看该值是否仍为空。如果是这样,您可能会遇到 JS 方面的问题。
-
好的,我设法得到字符串...但是反序列化到对象仍然不起作用。我是否必须在 Web.config 文件中配置某些内容才能正常工作?
标签: asp.net-mvc json object controller