2011-05-09 109 views
2

我在剃须刀视图引擎上有一个ajax窗体。为了验证我使用dataanotation类。当用户提交表单时验证工作正常,验证信息正常工作。 问题是,验证不会在关键帧或模糊事件上工作。在AjaxForm上的ASP.Net MVC 3验证

如何激活确认不会对给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; } 

回答

0

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

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

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

这些应该自动发生......我觉得OP在谈论他的自定义验证属性客户端验证( '[RequiredWithMessage]')。 – fretje 2011-05-09 16:13:34

+0

啊是的,我错过了! – 2011-05-09 17:36:51

3

更新

好吧,显然你正在使用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

+0

问题不在自定义验证属性中。当我使用default [Required] dataanotation类时,我也遇到同样的问题。 – Yorgo 2011-05-10 07:20:46

+0

@user:[必需的]应该在MVC 3的框中运行。确保在web.config文件的'appSettings'下有一个设置''。当然,您还需要在视图中引用jquery和jquery.validate和jquery.validate.unobstrusive(在“UnobtrusiveJavaScriptEnabled”为true的情况下)。 – fretje 2011-05-10 07:25:41

+1

我做了你以前告诉过的所有事情。我添加所有的参考。在布局页面中添加“ClientValidationEnabled”设置到web.config。 – Yorgo 2011-05-10 10:18:43