繁体   English   中英

ASP.NET MVC5客户端验证

[英]ASP.NET MVC5 Client-side Validation

如果选中复选框,则视图中有一个金额字段。

一旦Razor渲染了带有模型的视图数据,并且用户选中了一个复选框,而没有输入相应的数量。 出现验证消息。 如果取消选中该复选框,则验证消息不会消失。

我尝试使用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);

尝试此操作以禁用onclick事件上的客户端验证。请参阅: https//jqueryvalidation.org/validate/#onclick

$("#myform").validate({
    onclick: false,
});

要么

$("#yourChkboxID").validate({
    onclick: false,
});

这工作:

 if (!($('#IncludeAmount').checked)){ toggleValidatorVisibility($('#Amount'), false); } function toggleValidatorVisibility(element: any, value) { var td: any = element.closest('td'); if (value) { td.find('span.field-validation-error').show(); } else { td.find('span.field-validation-error').empty(); } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM