我需要从字符串中获取 json 对象并从 Controller 返回它。
在我的 Controller 中我有第二件事:
[HttpGet]
public JsonResult GetPageFilters()
{
...
...
if (settings != null)
{
var data = JsonConvert.DeserializeObject(settings.Filters); //Filter is string with json
return Json(data);
}
else
{
return null;
}
}
在我看来:
var filterOption;
$.get('Library/Books/GetPageFilters', null, function(data) {
filterOption = data;
}, "json");
Controller 被正常调用,字符串被反序列化为对象...但是 function(data)
不工作。那里什么也没有发生,我不明白为什么。
我错过了什么?
编辑:
看起来 string to json 出错了。 我试着将它保存在数据库中,我觉得看起来不错,但正确读取它对我来说是个问题。
function UpdateFilter() {
var filterOption = {
"filterTarget": "Books",
"filters": [
{ "cancelled": $("#showCancelledFilter").is(':checked') },
{ "completed": $("#showAllFilter").is(':checked') }
],
"page": page,
"sorting": sorting
};
var url = "Library/Books/UpdateFilter";
$.post(url, { pageFilters: JSON.stringify(filterOption) }, function (data) { });
}
似乎工作正常,但正如我已经说过的,由于某种原因,从字符串到 json 不正常。
最佳答案
您的方法标有[HttpGet]
,这意味着您需要将方法更改为
return Json(data, JsonRequestBehavior.AllowGet);
默认情况下,JsonRequestBehavior
设置为 DenyGet
您可以在 this question 的答案中阅读更多相关信息
关于c# - Json 返回表单 Controller 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066896/