2011-05-09 111 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