首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC5客户端验证

ASP.NET MVC5客户端验证
EN

Stack Overflow用户
提问于 2016-09-03 07:14:23
回答 2查看 890关注 0票数 0

我在视图中有一个金额字段,如果复选框处于选中状态,则该字段是必需的。

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

我曾尝试使用jquery删除所有生成的规则,但如果用户在回发之前再次复选框,这些验证规则将被删除(除非我存储它们...这正变得非常丑陋。)

有没有一种可以接受的方法来重新验证MVC模型中具有相同需求的客户端?

型号:

代码语言:javascript
复制
[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; }

查看:

代码语言:javascript
复制
<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 (客户端):

代码语言:javascript
复制
function fixUnobtrusiveValidations() {
    var form = getForm();
    (<any>$).validator.unobtrusive.parse(form);
}

function onClickCheckBoxIncludeAmount(){
        fixUnobtrusiveValidations();
}

$('IncludeAmount').click(onClickCheckBoxIncludeAmount);
EN

回答 2

Stack Overflow用户

发布于 2016-09-03 08:59:48

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

代码语言:javascript
复制
$("#myform").validate({
    onclick: false,
});

代码语言:javascript
复制
$("#yourChkboxID").validate({
    onclick: false,
});
票数 0
EN

Stack Overflow用户

发布于 2016-09-07 06:19:54

这是可行的:

代码语言:javascript
复制
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();
  }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39301766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档