2016-04-14 12 views
0

私は実際に答えを与えたpostからこれが動作すると思っていました。それは以前の投稿で行ったようにJSfiddleで動作しますが、私はそれをプロジェクトで動作させることはできません。私はコードが提出時にテキストボックスを検証しないことが正しいと思います。私のASP.NET Core MVC6プロジェクトでjquery.validationを取得できません

これは、ページのマークアップです:

<form action="/CompanyDetails/Edit" method="post"> 
    <div class="form-horizontal"> 
    <h4>CompanyDetailsViewModel</h4> 
    <hr /> 
    <div class="text-danger validation-summary-errors"> 
     <ul> 
     <li style="display:none"></li> 
     </ul> 
    </div> 
    <input type="hidden" data-val="true" data-val-required="The CompanyDetailsId field is required." id="CompanyDetailsId" name="CompanyDetailsId" value="1" /> 
    <div class="form-group"> 
     <label class="col-md-2 control-label" for="ABN">ABN:</label> 
     <div class="col-md-10"> 
     <input type="text" name="ABN" id="ABN" class="form-control" /> 
     <span class="text-danger field-validation-error" data-valmsg-for="ABN" data-valmsg-replace="true" /> 
     </div> 
    </div> 

フォームボタン:

<div class="form-group"> 
    <div class="col-md-offset-2 col-md-10"> 
    <input type="submit" value="Save" class="btn btn-default" /> 
    </div> 
</div> 

フォームのレンダリングが、私は代わりの保存をクリックしたときに、それが戻ってそれだけで行くのエラーを示しますしかし、ModelStateはfalseです。

私はFirefox経由で実際の検証スクリプトにブレークポイントを設定しましたが、それでも起動しません。

JSFiddleでの作業中に検証スクリプトがasp.netページで機能しないのはなぜですか

答えて

0

私は壁に頭を打つ数時間後にこれを試しました。ビューで使用されているモデルで設定した内容に基づいて、自動的にAsp.netコアで検証が行われることがわかります。したがって、[Requred]のようなデータ注釈がある場合、これはタグヘルパー変換の一部としてマークアップに追加されます。

だから私が本当に望んだのは、別のルールを「追加」して、私が持っていたものを検証しないことでした。実際に起こったのは、ABNに既に[必須]ルールがあるため、追加する必要があるためにカスタムルールに何も起こりませんでした。私が積極的に新しいルールを追加したら、それはすべて働き始めました。私はルールが順次であるかどうかを調べるために文字列の長さをチェックする別のカスタムルールを追加することにしました。つまり、一度 "false"が見つかると、その識別子の検証は中止されます。この場合、オーストラリア租税局のアルゴリズムに対するABNの有効性を検証する最後の規則は長さのチェックも行いますが、桁数が合致しない場合は決してそこに到着しません。それはすべての後にレンダリングするように、私は私のように、この間違ったのいずれかを持っている場合ちなみに、スクリプトが矛盾することに満足しところで...検証スクリプトの後に} {@sectionスクリプトで

を置いてきた

<script> 
    $(function() { 

     // Your custom validation method 
     jQuery.validator.addMethod('abnValidate', function abnValidate(value, element) { 
      if (value.length != 11 || isNaN(parseInt(value))) 
       return false; 
      var weighting = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]; 
      var tally = (parseInt(value[0]) - 1) * weighting[0]; 
      for (var i = 1; i < value.length; i++) { 
       tally += (parseInt(value[i]) * weighting[i]); 
      } 
      return (tally % 89) == 0; 
     }); 

     jQuery.validator.addMethod('exactlength', function (value, element) { 
      if (value.length != 11 || isNaN(parseInt(value))) 
       return false; 
      return true; 
     }); 

     $("#ABN").rules("add", { 
      required: true, 
      exactlength: true, 
      abnValidate: true, 
      messages: { 
       required: "Required input", 
       exactlength: "ABN has to be 11 digits long.", 
       abnValidate: "The ABN does not conform to the ATO's algorithm" 
      } 
     }); 
    }); 
</script> 
:まだちょうどとにかくここ..

を勉強すると、コードであります

関連する問題