2017-05-03 10 views
-1

私はjQuery検証を使用しているMVC 5フォームを持っています。私の問題は、特定の条件に基づいてフォームに書かれていないテキストボックスがあることです。ただし、DataAnnotationは、表示されているかどうかを検証するためにRequiredに設定されています。非表示フィールドの検証を停止できませんか?

私のフォームは、表示されていないフィールドの必須DataAnnotationのために転記していないということです。

私は周りを見回して、自分のフォームにIDと名前をつけて、その後に続くjQueryを与える提案を見つけました。私はページ上のソースを表示し、フォーム名は正しいですが、それはまだ表示されていないフィールドを検証しようとしています。

<script> 
    $(document).ready(function() { 
     $("#requestForm").validate({ ignore: ":not(:visible)" }); 
    });   
</script> 

これらは非表示のフィールドではありません。これらは、ビューに書き込まれないテキストボックスです。ビュー内のコードは次のとおりです。私のシナリオでは、これは部分的なものではないので、これらのテキストボックスはページに書き出されないだけですが、モデルが有効でないためにポストされなくなります。

あなたはvaidationプラグインのコードの前に以下のコードを使用することができます
if (Model.RequestType.ToLower() == "partial") 
{ 

    <div class="form-group row"> 
     <div class="col-md-3"> 
      <label class="control-label">From</label> 
      @Html.TextBoxFor(m => m.PartialFrom, new { @maxlength = "4", @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.PartialFrom, null, new { @class = "text-danger" }) 
     </div> 
    </div> 
} 
+0

を確認することができます検証({。 無視: ":hidden" }); –

+0

これは意味をなさない。入力を生成しない場合、存在しないものに対してクライアント側の検証を実行することはできません。その単純に不可能な(そして隠された入力は、デフォルトでは検証されないので、たとえ隠されていても、送信するフォームは停止しません)。フォームを提出していない場合は、それ以外の問題があります。しかし、あなたが実際にPOSTメソッドに当たっていて、 'ModelState'が無効であることを実際に意味するなら、それは別の問題です。 –

+0

それはPOSTに当たっていて、入力ボックスが表示されていなくても、モデル状態はそれが必要であると見ていました。私はhttps://github.com/jwaliszko/ExpressiveAnnotations – Caverman

答えて

0

$(document).ready(function(){  
    $.validator.setDefaults({ 
     ignore: [] 
    }); 
}); 

あなたはまた、$( "#のあるmyForm")のようにそれを使用することができJQUERY VALIDATION LOGS

+0

を使用して問題を回避することになりました。検証プラグインの前に追加すると言ったら、MVCから組み込みのバンドルを使用していますので、@ Scripts.Render (〜/ bundles/jqueryval)を_Layout.cshtmlページに追加します。私がテストしていたjQueryコードは、私のビュー(Index.cshtml)に直接あります。どうすればプラグインコードの前にすることができますか? – Caverman

関連する問題