更新
经过更多测试后,我发现以下相同的代码在发布到常规控制器时可以正常工作。在这种情况下,ModelState 具有值。发布到APIController时问题仍然存在。
我通过 JQuery 发布到 Web API 控制器以更新数据。更新方法有效,但 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>
并调用我的 Web API 方法来执行更新操作:
public HttpResponseMessage PutReport(报告报告) { // 报告对象在此处正确填充 // ModelState 没有值,IsValid 始终为真 如果(模型状态。IsValid) { // 更新对象 } }
这是发布到 Web API 方法的正确方法吗?是否需要另一个步骤来填充 ModelState?
谢谢!