【问题标题】:ASP.Net MVC 3 validation on AjaxFormAjaxForm 上的 ASP.Net MVC 3 验证
【发布时间】:2011-05-09 14:58:13
【问题描述】:

我在 razor 视图引擎上有一个 ajax 表单。对于验证,我使用数据注释类。用户提交表单时验证工作正常,验证消息工作正常。 问题是,验证不适用于 keyup 或 blur 事件。

如何在不提交 ajaxform(ajax.beginform) 的情况下激活验证

这是我的视图代码:

@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace,       
        UpdateTargetId = "employeeDetail", HttpMethod = "Post", OnComplete = "Complete", 
        Confirm = "Confirm?" }))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model=>model.Email)
    <span style="float:right"><input type="submit" class="tableGenelButton" id="submitButton" value="Kaydet" /></span>
}

型号:

  [RequiredWithMessage]
  [Display(Name = "E-Mail")]
  public string Email { get; set; }

【问题讨论】:

    标签: ajax asp.net-mvc-3 validation ajaxform


    【解决方案1】:

    更新

    好的,显然您正在使用Ajax.BeginForm,它使用 MicrosoftAjax 而不是 jQuery(我之前没有意识到这一点)。这需要一些额外的工作来启用客户端验证:

    你需要

    <% Html.EnableClientValidation(); %> 
    

    在您页面的某处,还链接到MicrosoftAjax.jsMicrosoftMvcAjax.jsMicrosoftMvcValidation.js

    这里有一个你可能会感兴趣的链接:

    ASP.NET MVC Client Side Validation With Ajax.BeginForm


    要为自定义验证属性启用客户端验证(我猜[RequiredWithMessage] 就是其中之一),您必须实现IClientValidatable interface

    这里有一篇文章解释了如何做到这一点:

    The Complete Guide To Validation In ASP.NET MVC 3 - Part 2

    【讨论】:

    • 问题不在于自定义验证属性。当我使用默认的 [Required] 数据注释类时,我也会遇到同样的问题。
    • @user:[必需] 应该在 MVC 3 中开箱即用。确保在 web.config 文件中的 appSettings 下有一个设置 &lt;add key="ClientValidationEnabled" value="true" /&gt;。当然,您还需要在您的视图中引用 jquery 和 jquery.validate 和 jquery.validate.unobtrusive(如果 UnobtrusiveJavaScriptEnabled 为真)。
    • 我做了你之前说的一切。我添加了所有参考。在布局页面中,还将“ClientValidationEnabled”设置添加到 web.config。
    • 啊,我知道你现在使用的是Ajax.BeginForm。我以为你在使用Html.BeginForm。我没有 Ajax.BeginForm 和客户端验证的经验。我知道它应该(开箱即用)与 Html.BeginForm 一起工作。
    • :D 你想念我。 npthanx
    【解决方案2】:

    假设您有客户端验证enabled,您需要在相关事件中调用.validate()

    $("#theFormToValidate input").blur(function(){
        $("#theFormToValidate").validate();
    });
    

    $("#theFormToValidate input").keyup(function(){
        $("#theFormToValidate").validate();
    });
    

    【讨论】:

    • 这些应该自动发生...我认为 OP 正在讨论客户端验证他的自定义验证属性 ([RequiredWithMessage])。
    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多