我需要在文本框和Dropdown上执行验证,只有当两个值都为空时才触发,并且当其中一个值为空时不执行任何操作。我该如何实现它?我需要创建自定义验证器吗?下面是我的模型和视图 的模型
public class CustomValidators
{
[Required]
[Required(ErrorMessage = "State Required")]
public string drpStateId { set; get; }
public System.Web.Mvc.SelectList drpState { set; get; }
[Required(ErrorMessage ="Region Required")]
public string txtRegion { set; get; }
}
查看
@model InterviewTest.Models.CustomValidators
@{
ViewBag.Title = "Custom Validator";
Layout = "~/Views/_Layout.cshtml";
}
<p>@Html.ActionLink("< Back", "Index")</p>
@using (Html.BeginForm("CustomValidatorPost"))
{
@Html.ValidationSummary()
<div class="container-fluid">
<div class="row">
<div class="col-sm-3">
<div class="form-group">
@Html.DropDownListFor(c => c.drpStateId, Model.drpState, "", new { @class = "form-control" })
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
@Html.TextBoxFor(x => Model.txtRegion, new { @class = "form-control" })
@*<input type="text" id="txtRegion" name="txtRegion" class="form-control" />*@
</div>
</div>
<div class="col-sm-3">
<button type="submit" name="btnSubmit" id="btnSubmit" class="btn btn-default">Submit</button>
</div>
</div>
</div>
}
答案 0 :(得分:0)
除了比较验证器之外,没有开箱即用的验证适用于2个字段,因此在您的情况下,您必须创建自定义验证。
您可以在两个文本框上创建一个JavaScript函数并在onchange上触发它,并在其中检查值,如果两者都为空,显示错误消息并阻止提交表单,您可以使用JQuery实现该功能通过添加自定义验证程序进行验证,请参阅此链接以获取更多详细信息https://jqueryvalidation.org/jQuery.validator.addMethod/
在服务器端,您可以在控制器操作中执行一个简单的if语句,以验证两个值都不为空,如果两者都为空,则向ModelState