JsonResult在ASP.NET CORE 2.1中返回Json [英] JsonResult return Json in ASP.NET CORE 2.1

查看:637
本文介绍了JsonResult在ASP.NET CORE 2.1中返回Json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在ASP.NET Core 2.0中工作的控制器:

Controller that worked in ASP.NET Core 2.0:

[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class GraficResourcesApiController : ControllerBase
{    
    private readonly ApplicationDbContext _context;

    public GraficResourcesApiController(ApplicationDbContext context)
    {
        _context = context;
    }

    [HttpGet]
    public JsonResult GetGrafic(int ResourceId)
    {
        var sheduling = new List<Sheduling>();


        var events = from e in _context.Grafic.Where(c=>c.ResourceId == ResourceId)
                     select new
                     {
                         id = e.Id,
                         title = e.Personals.Name,
                         start = e.DateStart,
                         end = e.DateStop,
                         color = e.Personals.Color,
                         personalId = e.PersonalId,
                         description = e.ClientName
                     };
        var rows = events.ToArray();

        return Json(rows);
    }
}

在ASP.NET Core 2.1中

in ASP.NET Core 2.1

return Json (rows);

写道在当前上下文中不存在Json.如果我们删除Json,就简单地离开

writes that Json does not exist in the current context. If we remove Json leaving simply

return rows;

然后写道,不可能将List()类型显式转换为JsonResult

then writes that it was not possible to explicitly convert the type List () to JsonResult

如何立即转换为Json?

How to convert to Json now?

推荐答案

没有Json(Object)方法.但是 Controller .

In asp.net-core-2.1 ControllerBase does not have a Json(Object) method. However Controller does.

因此要么重构当前控制器以从Controller

So either refactor the current controller to be derived from Controller

public class GraficResourcesApiController : Controller {
    //...
}

可以访问 Controller.Json方法还是可以初始化新的

to have access to the Controller.Json Method or you can initialize a new JsonResult yourself in the action

return new JsonResult(rows);

基本上是该方法在Controller

/// <summary>
/// Creates a <see cref="JsonResult"/> object that serializes the specified <paramref name="data"/> object
/// to JSON.
/// </summary>
/// <param name="data">The object to serialize.</param>
/// <returns>The created <see cref="JsonResult"/> that serializes the specified <paramref name="data"/>
/// to JSON format for the response.</returns>
[NonAction]
public virtual JsonResult Json(object data)
{
    return new JsonResult(data);
}

/// <summary>
/// Creates a <see cref="JsonResult"/> object that serializes the specified <paramref name="data"/> object
/// to JSON.
/// </summary>
/// <param name="data">The object to serialize.</param>
/// <param name="serializerSettings">The <see cref="JsonSerializerSettings"/> to be used by
/// the formatter.</param>
/// <returns>The created <see cref="JsonResult"/> that serializes the specified <paramref name="data"/>
/// as JSON format for the response.</returns>
/// <remarks>Callers should cache an instance of <see cref="JsonSerializerSettings"/> to avoid
/// recreating cached data with each call.</remarks>
[NonAction]
public virtual JsonResult Json(object data, JsonSerializerSettings serializerSettings)
{
    if (serializerSettings == null)
    {
        throw new ArgumentNullException(nameof(serializerSettings));
    }

    return new JsonResult(data, serializerSettings);
}

这篇关于JsonResult在ASP.NET CORE 2.1中返回Json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆