我使用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,因为我在电影数据库中分配了它。
答案 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; }
}