将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值
Posted
技术标签:
【中文标题】将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值【英文标题】:Passing Array from jQuery to MVC.NET Controller giving null result on controller but values present on jQuery function 【发布时间】:2011-07-28 08:36:18 【问题描述】:我正在尝试将一个数组从 jQuery 函数传递到我的控制器。该数组包含内容和包含该内容的 div 的 id。
当我检查通过 Firebug 中的 AJAX 帖子发送的对象时,正确的值就在那里,但是在我的控制器上放置一个断点后,接收到的值是一个空的 List 或 Array 或者我尝试将其设置为的任何类型。我对使用 JSON 将数据传递给我的控制器还很陌生,所以如果我出错了,我会很感激一些帮助。
在“提交”点击时调用的 jQuery 函数。该数组在我的脚本中全局声明,并在每次新区域填充内容时添加。
function postContent()
$.ajax(
type: "POST",
datatype: 'json',
url: "/Admin/getContentArray",
data: JSON.stringify(contentArray),
contentType: 'application/json; charset=utf-8',
success: function (result)
alert(result.Result);
);
测试接收控制器
[HttpPost]
public JsonResult getContentArray(List<Content> myPassedArray)
var data = myPassedArray;
return this.Json(null);
【问题讨论】:
【参考方案1】:我通过在调用 get 之前将传统属性设置为 true 来实现这一点。即:
jQuery.ajaxSettings.traditional = true
$.get('/controller/MyAction', vals: arrayOfValues , function (data) ...
我在这里找到了解决方案:Pass array to mvc Action via AJAX
【讨论】:
【参考方案2】:您可以查看following blog post。希望它能澄清事情。基本上有两种情况:ASP.NET MVC 3,您可以将 JSON 请求发送到开箱即用的控制器操作和以前的 ASP.NET MVC 版本,您需要使用自定义 JsonValueProviderFactory
。
【讨论】:
这很奇怪,因为我使用的是 MVC 3,我应该设置什么数据类型才能在我的控制器上接收这些数据?如上所述,将其设置为“内容”类型的列表会返回一个包含正确数量的条目但没有数据的列表。 你让我走上了正轨。我将我的内容模型设置为完全反映在 JSON 对象中发送的键,结果就在那里!!!谢谢达林以上是关于将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出空结果,但在 jQuery 函数上存在值的主要内容,如果未能解决你的问题,请参考以下文章
如何从字节数组 c# MVC .NET Core 在 iframe 中显示 pdf
如何将变量从 jQuery 传递到 AngularJs 函数
将数组从jquery传递给python函数时如何设置url?