如何解决ajax向MVC Api控制器发送null
我试图通过Ajax将变量作为vm从视图发送到API控制器,但是在控制器中,获取它的方法的参数为null! 错误是: EntityFramework.sqlServer.dll中发生了'System.NotSupportedException'类型的异常,但未在用户代码中处理
Jquery代码:
var vm = {
courseIds: []
};
var courses = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),queryTokenizer: Bloodhound.tokenizers.whitespace,remote: {
url: '/api/Course/GetCourses?query=%QUERY',wildcard: '%QUERY'
}
});
var teachers = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),remote: {
url: '/api/Teacher/?query=%QUERY',wildcard: '%QUERY'
}
});
$('#teacher').typeahead({
minLength: 1,highlight: true
},{
name: 'teachers',display: 'Name',source: teachers
}).on("typeahead:select",function(e,teacher) {
vm.teacherId = teacher.Id;
});
$("#courses").typeahead({
minLength: 1,{
name: 'courses',source: courses
}).on("typeahead:select",course1) {
$("#courselist").append("<li class='list-group-item'>" + course1.Name + "</li>");
$("#courses").typeahead("val","");
vm.courseIds.push(course1.Id);
console.log(vm);
});
$("#newPlan").submit(function(e) {
e.preventDefault();
$.ajax({
url: "/api/new/",method: "post",data: vm
}).done(function() {
console.log("Done!");
})
.fail(function() {
});
});
,控制器代码为:
[HttpPost]
public IHttpActionResult Plan(NewPlanDto coursePlan)
{
var teacher = _context.teachers.Single(m => m.Id == coursePlan.TeacherId);
var courses = _context.Courses.Where(
m => coursePlan.coursesId.Contains(m.Id)).ToList();
if (courses != null)
{
foreach (var course in courses)
{
var newCoursePlan = new CoursPlan()
{
Teacher = teacher,Course = course
};
_context.CoursPlans.Add(newCoursePlan);
}
}
_context.SaveChanges();
return Ok();
}
领事结果:
courseIds:数组[4,4] TeacherId:6
解决方法
您的问题是您在将对象发送到控件时没有序列化对象。
例如:
$.ajax({
url: "/api/new/",method: "post",data: JSON.stringify(vm)
}).done(function() {
console.log("Done!");
})
.fail(function() {
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。