【发布时间】:2017-12-06 12:33:07
【问题描述】:
我正在尝试将 json 数据从视图传递到控制器,但控制器一直为 null 我尝试了所有方法来解决此问题,但没有找到任何解决方案,这是我的控制器和 json 数据
$("#ex_save").on("click",function() {
var array = @Html.Raw(Json.Encode(Model));
var json = JSON.stringify(array);
$.ajax({
type: "POST",
url: "/Equipment/BulkUpdate",
data: { jsonCollection : json },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
console.log("Saved");
},
error: function (e) {
console.log(e);
}
});
});
这是我将数据传递给控制器的 ajax 方法。 这是我的控制器来获取这些数据:-
[HttpPost]
public ActionResult BulkUpdate(string jsonCollection)
{
try
{
return View();
}
catch
{
throw;
}
}
【问题讨论】:
-
您在 JSON 中发送 JSON 而不是仅使用标准 ModelBinder 是否有特定原因?似乎你只是在无缘无故地增加复杂性,除了给自己更多的工作。
-
@RoryMcCrossan 我有可编辑的表格,我正在查看,因此用户可以编辑它并按提交保存,但我有分页,所以它只将第一页数据传递给控制器集合,所以我尝试了这个方式。
-
您正在传递一个字符串并期待一个字符串,但您的 $.ajax 调用告诉它它实际上是 json(如果不是,它是一个字符串)。将 contentType 更改为 string 或将其删除。 stackoverflow.com/a/18701357/2181514
-
@RoryMcCrossan nope not working 仍然收到此错误 Invalid JSON primitive: jsonCollection. 我将 dataType json 更改为 text
-
@RoryMcCrossan 没有在控制器获得价值,但错误已解决。
标签: c# jquery json post model-view-controller