ASP.NET - jQuery DataTables请求未知参数错误

时间:2016-07-07 16:56:07

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

我使用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.name代码是个问题。类型模型只有两个字段,并从数据库中获取信息。感谢您的帮助。

这是我的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,因为我在电影数据库中分配了它。

2 个答案:

答案 0 :(得分:1)

似乎&#34;类型&#34;你的api调用中不包含属性,如果你使用Entity Framework检查生成的sql是否包含外表?

答案 1 :(得分:-1)

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