Knockout.js 在Knockout js中使用webapi发布数据
如何在Knockout.js 在Knockout js中使用webapi发布数据,knockout.js,knockout-2.0,asp.net-web-api,Knockout.js,Knockout 2.0,Asp.net Web Api,如何在Knockout JS中使用Web API发布数据 当我发布数据时,它给出mn错误请求错误 我有以下ViewModel function StudentViewModel() { var self = this; self.StudentID = ko.observable(""); self.Name = ko.observable(""); self.Age = ko.observable
Knockout JS
中使用Web API发布数据
当我发布数据时,它给出mn错误请求错误
我有以下ViewModel
function StudentViewModel() {
var self = this;
self.StudentID = ko.observable("");
self.Name = ko.observable("");
self.Age = ko.observable("");
var Student = {
StudentID: self.StudentID,
Name: self.Name,
Age: self.Age
};
self.Student = ko.observable();
self.Students = ko.observableArray();
var baseUri = '@ViewBag.ApiUrl';
$.getJSON(baseUri, self.Students);
self.create = function () {
if (Student.Name() != "" && Student.Age() != "") {
$.ajax({
url: baseUri,
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(Student),
success: function (data) {
// alert('added');
self.Students.push(data);
self.Name("");
self.Age("");
}
}).fail(function (xhr, textStatus, err) {
alert(err);
});
}
else {
alert('Please Enter All the Values !!');
}
};
更新:
这是控制器的动作
public HttpResponseMessage PostStudent(Student student)
{
if (ModelState.IsValid)
{
db.Students.Add(student);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, student);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = student.StudentID }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
您的viewModel中有一些错误
var submitData = ko.toJSON(Student);
$.ajax({
url: baseUri,
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(submitData),
success: function (data) {
// alert('added');
self.Students.push(data);
self.Name("");
self.Age("");
}
您的控制器操作看起来如何?@nemesv查看更新日志,如您的帖子到达控制器,但模型数据无效。尝试(a)查看应用程序正在发送的实际HTTP请求,以及(b)使用类似Fiddler的方法测试发送POST请求,并查看是否有任何差异。您是否应该在这一行“data:ko.toJSON(Student)”中引用self.Student?在VS中调试时,您还可以检查ModelState,以查看它有哪些错误。调试还将帮助您查看是否所有内容都正确映射到学生对象-