アップデート
さらにテストを行った結果、通常のコントローラーに投稿するときに、以下の同じコードが正常に機能することがわかりました。この場合、ModelStateには値があります。APIControllerに投稿するときに問題が残ります。
データを更新するために、JQueryを介してWebAPIコントローラーに投稿しています。updateメソッドは機能していますが、ModelStateは常に空であり、ModelState.IsValidは常にtrueです。(ModelStateを使用して、モデルプロパティのサーバー側検証を実行したいと思います)
私の見解では、JQueryを使用して新しいオブジェクト値を投稿しています。
@model MyProject.mvc.ViewModels.ReportsViewModel
using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm" }))
{
@Html.EditorFor(model => model.Report)
<button type="submit" onclick="UpdateObject(); return false;">Update</button>
}
<script type="text/javascript">
function UpdateObject() {
var updatedReport = {
ID: $("#ID").val(),
Name: $("#Name").val()
};
$.ajax({
url: "/api/reports/PutReport",
data: JSON.stringify(updatedReport),
type: "PUT",
contentType: "application/json;charset=utf-8"
});
return false;
}
</script>
そして、更新操作を実行するためにWebAPIメソッドが呼び出されます。
public HttpResponseMessage PutReport(レポートレポート) {{ //レポートオブジェクトはここに適切に入力されます // ModelStateには値がなく、IsValidは常にtrueです if(ModelState.IsValid) {{ //オブジェクトを更新します } }
これは、Web APIメソッドに投稿する適切な方法ですか?ModelStateを設定するために必要な別の手順はありますか?
ありがとう!