JsonResult - 如何返回空的JSON结果?

ric*_*ard 10 jquery json asp.net-mvc-4

我有一个ajax调用,它向我的一个控制器操作方法发出GET请求.

ajax调用应该获得JSON响应并使用它来填充数据网格.回调函数应该触发并构造网格并隐藏加载指示符.

$.getJSON('@Url.Action("Data", "PortfolioManager")' + '?gridName=revenueMyBacklogGrid&loginName=@Model.currentUser.Login', function (data) {

                        ConstructrevenueMyBacklogGrid(data);
                        $('#revenueMyBacklogLoadingIndicator').hide();

                    });
Run Code Online (Sandbox Code Playgroud)

问题是当我转换为JsonResult对象的对象没有数据时 - 它只是一个空集合.

returnJsonResult = Json(portfolioManagerPortalData.salesData.myYTDSalesClients,JsonRequestBehavior.AllowGet);

在这个例子中,它是一个myYTDSalesClients返回空的集合(这是好的和有效的 - 有时候不会有任何数据).

然后JSON对象返回一个空响应(空白,nadda),因为它不是有效的JSON,回调函数不会触发.因此,加载指示器仍然显示,看起来它只是永​​远加载.

那么,如何返回空的JSON结果{}而不是空白?

And*_*edo 14

if (portfolioManagerPortalData.salesData.myYTDSalesClients == null) {
    returnJsonResult = Json(new object[] { new object() }, JsonRequestBehavior.AllowGet);
}
else {
    returnJsonResult = Json(portfolioManagerPortalData.salesData.myYTDSalesClients, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)


Gio*_*mio 13

从asp.net mvc 5开始,你可以简单地写一下:

Json(new EmptyResult(), JsonRequestBehavior.AllowGet)
Run Code Online (Sandbox Code Playgroud)


小智 7

在 .Net Core 3.0 中,对于 ControllerBase 类型的控制器,您可以执行以下操作:

return new JsonResult(new object());
Run Code Online (Sandbox Code Playgroud)