を返し、私は問題以下している: を私は私のMVCコントローラPutメソッド - バックエンドはbadRequest(無効モデル)/ C#/ WebAPIの/ MVC
[HttpPut, Route("{id:int}")]
public IHttpActionResult Update(int id, [FromBody]Student student)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (var ctx = new EfDbContext())
{
student.Id = id;
ctx.Students.Attach(student);
var dbEntry = ctx.Entry(student);
dbEntry.State = EntityState.Modified;
if (student.Grades != null)
{
foreach (var grade in student.Grades)
{
ctx.Grades.Attach(grade);
var entry = ctx.Entry(grade);
entry.State = grade.Id == 0 ? EntityState.Added :
EntityState.Modified;
}
}
ctx.SaveChanges();
}
return Ok();
}
内のPUTメソッドを働いてきた私も自分を持っていますjavascriptはlocalhostウェブサイトのHTMLフォームで作業しています。
function addStudent() {
console.log($("#newStudent").serializeArray())
$.ajax({
url: 'http://localhost:56658/api/api/students',
type: 'post',
dataType: 'json',
data: $("#newStudent").serializeArray(),
success: function (data) {
$('#students').append(listItem(data));
}
});
}
と私のeditStudentスクリプト(ここでの問題がある)
function editStudent(id) {
console.log($("#newStudent").serializeArray())
$.ajax({
url: 'http://localhost:56658/api/api/students/' + id,
type: 'put',
dataType: 'json',
data: { id: id,student: $("#newStudent").serializeArray() },
success: function (data) {
$('#students').append(listItem(data));
}
});
}
あなたが見ることができるように、私は2つのほとんど同一のスクリプトを持っています。さて、問題はeditStudentです - 私のバックエンドはweb上のsubmitボタンを押すとすぐにbadrequestを返します(すべてのテキストフィールドに有効なデータが入っています)。生徒さんの作品を追加してください(POSTメソッドでモデルの正当性をチェックすることもできます)。 「編集」操作のためのフォームは学生を追加するためのフォームの正確なコピーです。フィールドIDなどのスペルミスを避けるため、ここに問題がないようにしてください。
どこが問題でしょうか?うまくポストマンでテストが、私はそれはJSで動作させることができないとき。
私はあなたが身体にid
を渡すが、アクションメソッドでは、あなただけStudent
体からの期待 乾杯
なぜ 'id'が' url'と 'data'に必要ですか? –
私は、editStudentの投稿されたデータがStudentクラスに適合しないと思います。 Studentクラスの定義と、送信されたJSONのJSONデータ対スクリプトのJSONデータを入力してください。私はいくつかの違いがあると思う。 –
2番目のajax呼び出しのデータからIDを削除しようとしています。すでにクエリパラメータ –