2

我在 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; }
4

2 回答 2

3

更新

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

你需要

<% Html.EnableClientValidation(); %> 

在您页面的某处,以及指向MicrosoftAjax.jsMicrosoftMvcAjax.js的链接MicrosoftMvcValidation.js

这是一个您可能会感兴趣的链接:

使用 Ajax.BeginForm 的 ASP.NET MVC 客户端验证


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

这是一篇文章,解释了如何做到这一点:

ASP.NET MVC 3 中的验证完整指南 - 第 2 部分

于 2011-05-09T16:20:36.957 回答
0

假设您启用了客户端验证,您将需要在相关事件中调用.validate() :

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

$("#theFormToValidate input").keyup(function(){
    $("#theFormToValidate").validate();
});
于 2011-05-09T15:49:53.827 回答