簡體   English   中英

在某些情況下禁用mvc3客戶端驗證

[英]Disable mvc3 client-side validations under certain conditions

我正在建立一個需要多個字段的搜索表單。 單選按鈕指示輸入哪些字段是必需的,如下所示:

[ ] Field 1
[.] Field 2
    Field 3
[ ] Field 4

在上述情況下,由於選中了關聯的單選按鈕,因此現在需要Field 2Field 3 為此,我實現了RequiredIf驗證屬性,它可以正常工作。

我的問題是其他驗證。 在這種情況下, Field 1也具有最小長度驗證。 如果Field 1具有不符合最小長度驗證的任何值,則該表格現在無效,無法提交。

我需要一種方法來禁用不需要的字段上的驗證。 (也可以在選中另一個單選按鈕時將其重新設置)。

字段不能設置為“ disabled = disabled”,這可以解決此問題,因為客戶要求。

我曾嘗試在上述字段中刪除data-val屬性或將其設置為false ,然后再次解析我的表單,但失敗了。

編輯:只需確保。 問題是客戶端驗證

請記住,正在發生兩種驗證:客戶端和服務器端。 因此,刪除data-val屬性將無濟於事。

現在,在您的模型中,我認為您正在使用[屬性]添加這些驗證規則。 我認為這種方法不會讓您進行條件驗證。

在這種情況下,FluentValidation可以為您提供幫助。 http://fluentvalidation.codeplex.com/

這非常簡單,您應該可以執行以下操作:

RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);

將字段設置為“禁用”將按預期工作。 客戶對此要求已改變主意。 有時這是最好的解決方案。

這仍然是更好的解決方案。

編輯:

我沒有考慮過在驗證插件上搜索文檔。 似乎有一些非常有趣的方法可供使用,例如規則(“ remove”,rules)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM