如何使用Ajax在asp.net mvc上显示服务器端验证错误

时间:2015-02-10 21:48:29

标签: c# jquery asp.net ajax asp.net-mvc

我知道这是一个非常常见的问题,但我无法找到解决问题的任何问题。

我使用的是Asp.net mvc5。我正在使用提供asp的帮助程序进行Ajax调用。模板中的代码如下所示。

@using (Ajax.BeginForm("Register", "Account",null , new AjaxOptions
        {
            HttpMethod = "POST",
            Url = "/Account/Register/",
            OnSuccess = "onSuccess"
        }))
        { 

<p>@Html.ValidationMessage("Register.Email")</p>
@Html.TextBox("Email", null, new { placeholder = "Enter your email")
 <input type="submit" value="submit" />

}

我的问题是我希望使用ajax回调显示来自服务器的验证错误,而无需重新呈现页面。

现在我的问题是。如何在控制器上编写动作以自动处理此问题?通过自动我的意思是什么是在模型无效时在控制器动作上返回一些填充错误字段的方法。

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

如果您将模型状态错误添加为控制器中的键值对,则可以使用以下方法显示它们。

<强>的JavaScript

这将查找所有验证消息跨越模型状态错误密钥,并将红色错误消息添加到它们。 请注意,您可能希望对此进行调整以显示针对密钥的许多错误消息。

public doValidation(e)
{
        if (e.data != null) {
            $.each(e.data, function (key, value) {
                $errorSpan = $("span[data-valmsg-for='" + key + "']");
                $errorSpan.html("<span style='color:red'>" + value + "</span>");
                $errorSpan.show();
            });
        }
}

查看

添加指向新创建的OnFailure javascript方法的doValidation参数。参数e自动从json结果传递过来。 可以从任何javascript方法中调用此doValidation,因此您也可以从onSuccess调用它。

{
    HttpMethod = "POST",
    Url = "/Account/Register/",
    OnSuccess = "onSuccess",
    OnFailure = "doValidation"
}