ASP MVC验证

时间:2016-09-29 01:35:16

标签: asp.net-mvc

我需要在文本框和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>
}

1 个答案:

答案 0 :(得分:0)

除了比较验证器之外,没有开箱即用的验证适用于2个字段,因此在您的情况下,您必须创建自定义验证。

您可以在两个文本框上创建一个JavaScript函数并在onchange上触发它,并在其中检查值,如果两者都为空,显示错误消息并阻止提交表单,您可以使用JQuery实现该功能通过添加自定义验证程序进行验证,请参阅此链接以获取更多详细信息https://jqueryvalidation.org/jQuery.validator.addMethod/

在服务器端,您可以在控制器操作中执行一个简单的if语句,以验证两个值都不为空,如果两者都为空,则向ModelState

添加错误