【问题标题】:ASP.NET - jQuery DataTables requested unknown parameter errorASP.NET - jQuery DataTables 请求未知参数错误
【发布时间】:2016-07-07 16:56:06
【问题描述】:

我使用 ASP.NET MVC 5 制作一个网络应用程序,在我看来要列出电影及其类型时,我得到了这个错误:

DataTables 警告:table id=movies - 请求第 0 行第 1 列的未知参数“genre.name”。有关此错误的详细信息,请参阅http://datatables.net/tn/4

我认为我的脚本:

 var table = $("#movies").DataTable({
            ajax: {
                url: "/api/movies",
                dataSrc: ""
            },
            columns: [
                {
                    data: "name",
                    render: function(data, type, movie) {
                        return "<a href='/movies/edit/" + movie.id + "'>" + movie.name + "</a>";
                    }
                },
                {
                    data: "genre.name"
                },
                {
                    data: "id",
                    render: function(data) {
                        return "<button class='btn-link js-delete' data-movie-id=" + data + ">Delete</button>";
                    }
                }
            ]

我相信genre.namecode 是问题所在。流派模型只有两个字段,并从数据库中获取信息。感谢您的帮助。

这是我的 api/movies 控制器中的 get 方法:

 public IEnumerable<MovieDto> GetMovies()
    {
        return _context.Movies
            .Include(m => m.GenreSet)
            .ToList()
            .Select(Mapper.Map<Movie, MovieDto>);
    }

MovieDto 类有一个成员字段 GenreSetDto,它是从我的 GenreSet 类映射而来的。

编辑: 这是我得到的数据:

[
 {
"id": 1,
"name": "Hangover",
"genreId": 0,
"genre": null,
"dateAdded": "2009-04-03T00:00:00",
"releaseDate": "2009-02-03T00:00:00",
"numberInStock": 5
 }
 ]

我现在看到,问题是genreId 为零,它为空,因为我在数据库中没有对应的流派。不过,genreId 不应该为零,它应该是 2,因为我在电影数据库中分配了它。

【问题讨论】:

  • 您的数据响应中有namegenre.name
  • 我不确定这是什么意思,对不起。 name 在我加载页面时没有渲染问题,只有genre.name
  • 什么是返回/api/movies???
  • @ecain 您应该发布从服务器发送到客户端的 JSON 数据,因为这可能是您的 genre.name 错误的来源。 CMedina 大概就是这个意思;您收到此错误是因为 JSON 数据中没有 genre.name 对象。
  • @CMedina /api/movies 是 web api 控制器。 @Chris H. 当我使用邮递员查看我的 JSON 数据时,我只是得到 Unexpected '

标签: c# jquery asp.net-mvc datatables


【解决方案1】:

似乎“流派”属性不包含在您的 api 调用中,如果您使用的是实体框架,请检查生成的 sql 是否包含外部表?

【讨论】:

【解决方案2】:

将 GenreDto 添加到 MovieDto 类,它应该可以工作。

public class MovieDto {
    public int Id { get; set; }
    [Required]
    [StringLength(255)]
    public string MovieName { get; set; }
    public DateTime? ReleaseDate { get; set; }
    //public DateTime? DateAdded { get; set; }
    public byte NumberInStock { get; set; }
    public int MovieGenreId { get; set; }
    public GenreDto Genre { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2017-07-19
    • 2019-11-13
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多