在Razor视图上调用ajax后显示模型状态错误

Adm*_*vić 13 validation ajax asp.net-mvc-3

我有@ Html.ValidationMessageFor帮助器和jquery不显眼的验证设置的剃刀视图.

我想调用控制器/操作,并通过使用已经设置的相同验证逻辑来​​显示操作返回的最终模型状态错误.

我已经做了一些代码,但是我想知道是否已经有办法自动完成它,即如果我将HTTP Bad Request作为AJAX响应捕获,我想从响应体中取出模型状态错误并将它们插入到不引人注目的验证.

我正在寻找完整的推荐解决方案,而不是解决方法:)

谢谢!

web*_*per 19

您可以返回错误Json结果(如何从asp.net mvc modelState获取所有错误?):

var allErrors = ModelState.Values.SelectMany(v => v.Errors);
Run Code Online (Sandbox Code Playgroud)

然后手动显示错误.获取表单验证器:

var validator = $("form").validate();
Run Code Online (Sandbox Code Playgroud)

然后检查您的字段是否已正确初始化,例如您可以在此处查看(可选步骤):

validator.settings.rules
Run Code Online (Sandbox Code Playgroud)

要么

validator.settings.messages
Run Code Online (Sandbox Code Playgroud)

如果一切正常,那么你可能会显示错误:

validator.showErrors({"Password": "Too simple!"});
Run Code Online (Sandbox Code Playgroud)

Password字段名称在哪里,Too simple!是错误消息.