javascript - ajax 将 null 发送到 MVC Api 控制器
问题描述
我正在尝试通过 Ajax 将变量作为 vm 从视图发送到 API 控制器,但在控制器中,获取它的方法的参数为空!错误是: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'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
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,
highlight: true
},
{
name: 'courses',
display: 'Name',
source: courses
}).on("typeahead:select",
function(e, 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] 教师 ID:6
解决方案
您的问题是您在将对象发送到控制器时没有序列化它。
例如:
$.ajax({
url: "/api/new/",
method: "post",
data: JSON.stringify(vm)
}).done(function() {
console.log("Done!");
})
.fail(function() {
});
推荐阅读
- java - @Version 注释导致“对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例”异常
- r - R 中的函数、For 循环和条件
- tkinter - Tkinter 对话框问题
- angular - 如何使用 Angular 8 将图像绑定到 src 属性
- angular - NgRx 数据 DefaultDataServiceConfig
- python-3.x - ValueError:RNN 单元应具有属性“state_size”(整数元组,每个 RNN 状态一个整数)
- reactjs - 使用反应故事书的复杂布局
- macos - 使 k8s 集群服务可用于本地 docker 容器
- git - Bitbake 命令因发行版 fsl-imx-xwayland 而失败
- docker - docker 注册表前端(konradkleine/docker-registry-frontend)在单击存储库时出错,并且看不到 docker 图像