如果複選框被選中,我在視圖中有一個數量字段。ASP.NET MVC5客戶端驗證
一旦Razor呈現View with Model數據,並且用戶選中沒有輸入相應金額的複選框。顯示驗證消息。如果我取消選中該複選框,驗證消息不會消失。我試過使用jquery刪除所有生成的規則,但如果用戶再次複選框,在回發之前,這些驗證規則將被刪除(除非我存儲它們...這是得到真的很難看。)
是否有一種可接受的方式來重新驗證客戶端與MVC模型中的相同要求?
型號:
[Display(Name = "Include Amount")]
public bool IncludeAmount { get; set; }
[Display(Name = "Amount")]
[RequiredIf("IncludeAmount", TargetValue = true, ErrorMessage = "Amount is required.")]
[MaxDigits(10, 2)]
[RegularExpression(RegularExpressions.Money, ErrorMessage = ErrorMessages.NumericValueInvalidFormat)]
[GreaterThanZero]
public Nullable<decimal> Amount { get; set; }
查看:
<td class="dataEntryLabel" colspan="2">
@Html.LabelFor(model => model.IncludeAmount)
</td>
<td class="dataEntryField" colspan="2">
@Html.CheckBoxFor(model => model.IncludeAmount, new { id = "IncludeAmount" })
<span class="dollar-sign">@Html.TextBoxFor(model => model.Amount, "{0:F}", new { id = "Amount", disabled = "disabled" })</span>
@Html.ValidationMessageFor(model => model.Amount)
</td>
的JavaScript(客戶端):
function fixUnobtrusiveValidations() {
var form = getForm();
(<any>$).validator.unobtrusive.parse(form);
}
function onClickCheckBoxIncludeAmount(){
fixUnobtrusiveValidations();
}
$('IncludeAmount').click(onClickCheckBoxIncludeAmount);
試試這個https://code.msdn.microsoft.com/Flexible-Conditional-37ae638e/sourcecode ?fileId = 65995&pathId = 91939366 下面是一些解釋https://blogs.msdn.microsoft.com/stuartleeks/ 2012/09/07/flexible-conditional-validation-with-asp-net-mvc-adding-client-side-support/ –
你爲自定義屬性使用了哪個插件(或者你擁有這些插件?)。沒有理由重新分析驗證器。並且不要設置'id'屬性 - 你只需要覆蓋'HtmlHelper'方法生成的ID –