2017-03-03 87 views
2

此字段根據其可見性進行選擇性驗證。如果該字段是隱藏的,那麼我們不想驗證它,但如果它沒有隱藏,那麼我想添加所需的驗證。手動將不顯眼的驗證添加到mvc表格

我現在手動檢查它,並逐步通過調試器我可以看到MS unobtrusive驗證庫在我更改類屬性後重置類。

我猜想有一些內置的方法,我可以從不顯眼的驗證庫調用,但似乎無法弄清楚。

型號

[Column(TypeName = "varchar")] 
[StringLength(150, ErrorMessage = "Url must be less than 151 characters.")] 
public string Url { get; set; } 

查看javascipt的

if ($("#Url").val() === '') { 
    $('#Url').addClass('input-validation-error'); 
    return false; 
} else { 
    $('#Url').removeClass('input-validation-error'); 
} 

觀形成

<div> 
    @Html.TextBoxFor(m => m.Url) 
    @Html.ValidationMessageFor(m => m.Url) 
</div> 

回答

0

啊終於找到了!

以下是如何使用內置的驗證庫來即時添加驗證!

$('#Url').rules('add', { 
    required: true 
}); 
0

爲什麼不限制輸入長度?

@Html.TextBoxFor(m => m.Url, new { maxlength = 150 }) 

好吧,我還沒有試過,但我認爲它你想大致也是

<div> 
    @ Html.TextBoxFor(m => m.Url) 
    @ If (Model.validateUrl) 
     { 
     var v = new ValidationMessageFor(m=>m.Url); 
     v.GetHtml(); 
     } 
</div> 

,或者它可能只是簡單的

<div> 
    @ Html.TextBoxFor(m => m.Url) 
    @ If (Model.validateUrl) 
     { 
     @ Html.ValidationMessageFor(m => m.Url) 
     } 
</div> 

我不能很回想一下,這是適當的,最近在角度工作如此之多

+0

長度部分不是問題,如果文本框被隱藏,它不會超過最大長度。我需要根據它的可見性進行必要的修改。 – user3953989

+0

對不起,我在看長度驗證。基於的可見度是多少?一個viewmodel片或在JavaScript中的東西? –

+0

模型 – user3953989

0

你不能添加類,它不會工作,你有t o使用$.validator所以你的代碼會是這樣

 <script type="text/javascript"> 
$("#Submitbutton") 
    .click(function() { 


     if ($("#Url").val() === '') { 
      $.validator.setDefaults({ 
       ignore: "#Url" 
      }); 

     } else { 
      $.validator.setDefaults({ 
       ignore: null 
      }); 
      return false; 

     } 
    }); 

它會檢查其值爲null它會忽略驗證否則它會顯示驗證錯誤

+0

這是行不通的 – user3953989

+0

你確定所有的庫都已正確加載嗎?並可以提供整個JavaScript代碼? – Usman

+0

它們被正確加載,驗證對錶單的其餘部分正常工作。 javascript的其餘部分就是上面發佈的代碼在OnSubmit處理程序中運行。 – user3953989

相關問題