首页 > 解决方案 > MVC C# API - 使用列表属性返回 RootObject 而不仅仅是返回列表

问题描述

我正在向我的 MVC 应用程序添加一个 API 控制器以重新调整 JSON 数据

在我的应用程序中,我有一个名为 Album 的类:

public class Album
{
public int Id { get; set; }
public string AlbumName { get; set; }
public int YearReleased { get; set; }
public string AlbumInfo { get; set; }
public string imgAlbumCover { get; set; }
}

我的数据库包含几个专辑对象的表

我创建了一个 API 控制器来以 Json 格式返回这个专辑列表。

我将以下代码添加到 WebApiConfig.cs 以获取 JSON 而不是 XML:

using System.Net.Http.Headers;




GlobalConfiguration.Configuration.Formatters
.JsonFormatter.MediaTypeMappings.Add 
(new System.Net.Http.Formatting.RequestHeaderMapping("Accept",
                          "text/html",
                          StringComparison.InvariantCultureIgnoreCase,
                          true,
                          "application/json"));

当我在浏览器中调用相册 API 时,返回的是 JSON 格式的相册对象列表。

而不是返回专辑列表,我想重新调整一个具有 1 个名为专辑的属性的 RootObject,其中专辑是专辑对象的列表。有没有办法在控制器中做到这一点?我不想创建一个新的 RootObject 类。

下面是我的 API 控制器的代码:

 namespace Music.Controllers.API
 {
    public class AlbumsController : ApiController
     {
      private MusicContext db;

      public AlbumsController()
      {
        db = new MusicContext();
      }


      public IEnumerable<Album> GetAlbums()
      {
        return (db.Albums.ToList());
      }

    }
  }

标签: c#jsonasp.net-mvcvisual-studio

解决方案


然后像这样创建一个视图模型并返回相同的

public class AlbumListResponseModel
{
 public IEnumerable<Album> Albums { get; set; }
}

 public async Task<IActionResult> GetAlbums()
  {
    AlbumListResponseModel model = new AlbumListResponseModel
     {
         Albums = db.Albums;
     } 
    return OK(model);
  }

如果您正在使用,请WEB API 2.0考虑使用IActionResult而不是


推荐阅读