2014-01-22 27 views
0

我有一個頁面提供兩個提交按鈕; SaveAndContinue和SaveAndExit。除了CSS類和控制器操作外,它們完全相同。ASP.Net MVC客戶端驗證錯誤 - 工作一個按鈕,但不是其他

第一個,SaveAndContinue將正確驗證客戶端,如果ModelState.IsValid爲false,它將不會發布到控制器。而第二個將完全跳過客戶端驗證並通過ModelState.IsValid發佈到控制器。

我使用標準數據註釋驗證,沒有別的是特別的。沒有花哨的jQuery/AJAX功能。

任何建議爲什麼一個人會工作,而另一個不是?

我使用MVC 3,jQuery.validate,jQuery.validate.unobtrusive。

在此先感謝。

+0

都是提交類型的按鈕? – Marko

+1

什麼不工作?你想要發生什麼? – Marko

+1

是的,這兩個按鈕都被提交,並且除了CSS類和控制器動作外完全一樣。第二個按鈕不是不在客戶端在驗證控制器之前進行驗證,而第一個是。我想要的是他們都表現得一樣,或者至少明白他們爲什麼不這樣做。 – marjoh

回答

0

提交按鈕是否包含在不同的表單中?如果提交按鈕不在包含驗證失敗的輸入的表單中,那麼提交仍然會發生,沒有客戶端錯誤。

+0

這是一個有趣的信息傑森,謝謝。不過,我可以證實他們都是同一種形式。 – marjoh

+0

我仍然可以用通常的'ModelState.IsValid'方式捕獲控制器中的驗證,所以我有一個解決方法。我只想了解爲什麼它不會在客戶端發生這個第二個按鈕。例如,是否有一些自動連接觸發客戶端上第一個按鈕的驗證按鈕,需要爲第二個按鈕明確設置? – marjoh

0

答案已經找到(感謝奧什),它在我的臉上顯露出來。

第二個按鈕使用的CSS類之一是'cancel'類,這本身並沒有太大的作用。

然而,在jquery.validate-vsdoc.js的驗證功能特別檢查,如果'submitHandler'是與類'.cancel'一個按鈕,如果是這樣設置validator.cancelSubmit =真

this.find("input, button").filter(".cancel").click(function() { 

validator.cancelSubmit = true; 

}); 

希望這可以幫助其他人。 :-)