2016-04-14 13 views
0

Bu sorunun bana gerçek yanıtı veren bir post çalışmasından kaynaklandığını düşündüm. önceki yazımda olduğu gibi JSfiddle çalışır, ancak projede çalışmak için alamıyorum. Bence kod, gönderilmekte olan metin kutusunu doğrulamıyor.ASP.NET Core MVC6 projemde jquery.validation ile çalışma yapılamıyor

<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> 

formu düğmesi:

Bu

sayfa için biçimlendirme olduğunu

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

formu oluşturur ama kurtarmak yerine o hatanın gösterildiği tıkladığınızda sadece geri dönüyor kontrolör, ancak ModelState yanlıştır.

Gerçek doğrulama komut dosyasına Firefox aracılığıyla kesme noktaları koymuştum ama ateş bile vermiyor.

JSFiddle'da çalışırken validate, asp.net sayfasında neden çalışmıyor?

cevap

0

Kafamı duvara çarptığında saatlerce çalıştım. Bu doğrulama, görünüm tarafından kullanılan modelde ayarladığınıza göre otomatik olarak Asp.net çekirdeğinde yapılır. Dolayısıyla, [Requred] gibi bir veri bağlantınız varsa, taghelper dönüşümünün bir parçası olarak bu işaretlemeye eklenir.

Öyleyse, gerçekten istediğim, başka bir kuralı "ekledim" diye doğrulamak değildi. Gerçekte, ABN'nin bir [Zorunlu] kuralına sahip olması gerektiğinden, eklenmesi gereken özel kuralım için hiçbir şey olmamıştı. Aktif olarak yeni bir kural ekledikten sonra her şey işe başladı. Kuralların sıralı olup olmadığını görmek için dizenin uzunluğunu kontrol eden başka bir özel kural eklemeye karar verdim, yani bir "yanlış" bulunduğunda bu tanımlayıcının geçerliliği duracaktı. Bu durumda, ABN'yi Avustralya Vergi Dairesi'nin algoritması için geçerli kılan son kural, aynı zamanda bir uzunluğa da sahiptir, ancak rakamların sayısı değişmezse asla oraya ulaşmaz. Ben I olarak yanlış bu herhangi birine sahipseniz mutlu arada

arada, senaryo o şeyden sonra kılar, böylece doğrulama komut sonra @section Scripts {} yerleştirildi ...

çelişki arz

<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> 
: hala öğreniyorum ..

Neyse burada kodudur

İlgili konular