当前位置: 首页 > 面试题库 >

JsonResult在ASP.NET CORE 2.1中返回Json

盖向荣
2023-03-14
问题内容

在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中

return Json (rows);

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

return rows;

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

如何立即转换为Json?


问题答案:

在asp.net-core-2.1 ControllerBase中没有Json(Object)方法。但是Controller确实如此。

因此,要么将当前控制器重构为 Controller

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

可以访问该Controller.Json方法,或者您可以JsonResult在操作中初始化一个新的自己

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);
}

资源



 类似资料:
  • 本文向大家介绍详解mvc使用JsonResult返回Json数据,包括了详解mvc使用JsonResult返回Json数据的使用技巧和注意事项,需要的朋友参考一下 controller 中定义以下方法: 页面调用: 以上是在mvc中使用,在webform中怎么使用呢? 在webform中要引用Newtonsoft.Json.dll; 当然你也可以自己拼接字符串。 页面方法: 显示结果: 以上就是本

  • 是否有一种方法可以将catch{}以序列化为JSON对象的方式从catch{}返回错误消息?我考虑向myObject添加一个List属性,并在其中存储错误。有没有更好的办法做到这一点?

  • 问题内容: 我的MVC控制器中有一个简单的方法: 这是一个区域对象: 这就是我从视图中调用方法的方式: 我已经检查了控制器中的方法,并创建了Area对象的列表。您有什么主意,为什么从视图中调用该方法时为什么会出现500内部服务器错误?当我返回其他任何内容(例如Dictionary对象)时,一切正常,只是当我打算将Areas列表转换为Json时,我得到一个错误。 问题答案: 由于类包含和包含的集合,

  • 问题内容: 如果我有这样的控制器: 基本上,我从存储库中获取东西,然后将其投影到匿名类型中。 如何进行单元测试? 有一个名为的属性,但它的类型与我们预期的一样。 这是否意味着如果我想测试JSON对象是否具有我期望的属性(“ id”,“ name”,“ type”),我是否必须使用反射? 编辑: 这是我的测试: 但是我在循环中收到一个运行时错误,指出“对象不包含id的定义”。 当我将断点定义为匿名类

  • 本文向大家介绍ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息,包括了ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息的使用技巧和注意事项,需要的朋友参考一下 一、如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): 如果我们直接在浏览器里调

  • 问题内容: 我正在尝试在JavaScript中建立字符串数组,并在action方法的字符串列表中获取结果。以下是我的JavaScript的外观。我正在使用jQuery 1.4.2。问题是我在动作方法中的列表始终显示为NULL。JavaScript字符串数组会不会正确映射到C#中的字符串列表? 然后我的JsonResult如下所示: 问题答案: 更新到jQuery 1.4.2后,我遇到了同样的问题。