通过jquery ajax在Web Api中显示无效的ModelState
我正在使用Web Api与Knockoutjs。 我正试图弄清楚如何将无效模型状态的详细信息返回给用户。
这是在VB中我非常非常抱歉,这不是我的错! (随时给我很多减去这个存在于我的理解)
好的,我们走吧
所以我在我的模型上放了一个必填字段。
<Required>
Public Property test() As String
Get
Return m_test
End Get
Set(value As String)
m_test = value
End Set
End Property
Private m_test As String
在控制器中我有我的保存功能。
<HttpPost>
Public Async Function Save(data As Origin_SingleOvrUndr_main_rewrite_vm) As Task(Of IHttpActionResult)
If ModelState.IsValid Then
Await Origin_SingleOvrUndr_main_rewrite_vmRepository.SaveDataAsync(data)
Return Ok()
Else
Return BadRequest(ModelState)
End If
End Function
并在我的HTML页面上,我打电话给保存。
this.saveData = function () {
var data = ko.toJSON(self);
$.ajax({
url: "api/VMOriginSingleOvrUndrMainRewrite",
type: "POST",
data: data,
datatype: "json",
processData: false,
contentType: "application/json; charset=utf-8",
success: function (result) {
alert('save successfull');
},
error: function (xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
},
});
}
所以我特意在帖子中省略了必填字段,以查看回复的内容。 所以回应是(通过击中F12并查看IE11中的响应主体)
{"Message":"The request is invalid.","ModelState":{"data.test":["The test field is required."]}}
但是只显示网页上的警报。 消息(请求无效)。
如何,在jQuery的AJAX错误部分我可以有警报显示部分关于测试字段是必需的? (以及其他可能在那里的消息?)
你可以使用一个名为errors
的observableArray
,显示在你的视图上。
这是一个与视图和模型对应的错误片段。 它采用原始响应,提取错误并在视图中显示它们:
<div class="errors" data-bind="foreach: errors">
<div>
<p data-bind="text:prop"></p>
<ul data-bind="foreach: errors">
<li data-bind="text: $data"></li>
</ul>
</div>
</div>
// see http://knockoutjs.com/documentation/observableArrays.html for info on removeAll
var vm = { errors: ko.observableArray([]) }
var r = {"Message":"The request is invalid.","ModelState":{"data.test":["The test field is required."]}};
vm.errors.removeAll();
for(p in r.ModelState) {
if (r.ModelState.hasOwnProperty(p)) {
vm.errors.push({prop: p, errors: r.ModelState[p]});
}
}
ko.applyBindings(vm);
.errors {
border: solid red 1px;
border-radius: 10px 2px 2px;
background-color: #FF8;
color: #D10;
padding: 10px;
font-family: 'Segoe UI', 'Arial';
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div class="errors" data-bind="foreach: errors">
<div>
<b>Errors for <!-- ko text: prop --><!-- /ko -->:</b>
<ul data-bind="foreach: errors">
<li data-bind="text: $data"></li>
</ul>
</div>
</div>
链接地址: http://www.djcxy.com/p/67991.html
上一篇: displaying invalid ModelState in Web Api via jquery ajax