Validation Razor MVC3中的或验证

Validation Razor MVC3中的或验证,validation,asp.net-mvc-4,jquery-validate,Validation,Asp.net Mvc 4,Jquery Validate,我有一个带有几个文本框的razor视图 我想让你要么选择其中一个文本框,要么选择其他三个文本框,你不能提交,除非你在其中至少一个选项中输入文本。。。 也就是说,你可以输入一个社会保险号码,或者输入一个人的名字、姓氏和出生日期。对于最后一个选项,您必须输入名字、姓氏和DOB。这是否可能使用不引人注目的验证? 以下是我的简历 <div id="searchByDemographicsDiv"style="float: left;width: 50%; display:inline; ">

我有一个带有几个文本框的razor视图

我想让你要么选择其中一个文本框,要么选择其他三个文本框,你不能提交,除非你在其中至少一个选项中输入文本。。。 也就是说,你可以输入一个社会保险号码,或者输入一个人的名字、姓氏和出生日期。对于最后一个选项,您必须输入名字、姓氏和DOB。这是否可能使用不引人注目的验证? 以下是我的简历

<div id="searchByDemographicsDiv"style="float: left;width: 50%; display:inline; ">
            @*@using(Html.BeginForm("SearchByDemographic", "SearchPatients",FormMethod.Post, new{ id = "searchByDemographics"})){*@
            @using (Ajax.BeginForm("SearchByDemographic", "SearchPatients", null, new AjaxOptions { HttpMethod = "POST", LoadingElementId = Url.Content("~/Images/ajax-loader.gif"), OnSuccess = "binddata", OnFailure = "FailAlert" }, new { id = "searchByDemographics" })){ 
          <ul>
                      <li>@Html.Label("SSN", new { @for = "SSN" })  <br />@Html.TextBox("SSN", null, new { id = "SSN", name = "SSN", @class = "SSN" })</li>
          </ul>
          <ul>
          <p>Or</p>
          </ul>
          <ul>
            <li>@Html.Label("FirstName", new { @for = "FirstName" }) <br />@Html.TextBox("FirstName", null, new { id = "FirstName", @class = "demoGrphcs", name = "FirstName" })</li>
            <li>@Html.Label("LastName", new { @for = "LastName" }) <br />@Html.TextBox("LastName", null, new { id = "LastName", @class = "demoGrphcs", name = "LastName" })</li>
            <li>@Html.Label("dateOfBirth", new { @for = "dateOfBirth" }) <br />@Html.TextBox("dateOfBirth", null, new { id = "dateOfBirth", @class = "demoGrphcs", name = "dateOfBirth" })</li>
            <li>@Html.Label("Address1", new { @for = "Address1" }) <br />@Html.TextBox("Address1", null, new { id = "Address1" })</li>
            <li>@Html.Label("Address2", new { @for = "Address2" }) <br />@Html.TextBox("Address2", null, new { id = "Address2" })</li>
            <li>@Html.Label("City", new { @for = "City" }) <br />@Html.TextBox("City", null, new { id = "City" })</li>
            <li>@Html.Label("State", new { @for = "State" }) <br />@Html.TextBox("State", null, new { id = "State" })</li>
            <li>@Html.Label("Country", new { @for = "Country" }) <br />@Html.TextBox("Country", null, new { id = "Country" })</li>
            <li>@Html.Label("PostCode", new { @for = "PostCode" }) <br />@Html.TextBox("PostCode", null, new { id = "PostCode" })</li>
          </ul>  
        <input type="submit" value="Search By Demographics" class="button" id="submitDemo"/>     
            }
</div>

我认为最简单的方法是从模型中传递所有这些值并在帖子上检查,根据您的要求进行验证。

我认为最简单的方法是从模型中传递所有这些值并在帖子上检查,根据您的要求进行验证。

我不确定您为什么要在这种情况下进行不引人注目的验证,因为验证非常具体。当您试图完成的验证是一种可重用的验证时,不引人注目的验证是很有意义的,但您的情况并非如此


我建议您在服务器端验证的模型中实现
IValidatableObject
,并使用普通jquery进行客户端验证。

我不确定您为什么要在这种情况下进行不引人注目的验证,因为验证非常具体。当您试图完成的验证是一种可重用的验证时,不引人注目的验证是很有意义的,但您的情况并非如此


我建议您在服务器端验证的模型中实现
IValidatableObject
,并使用普通jquery进行客户端验证。

我很乐意按照您的建议执行。IE使用普通的旧jquery来执行验证。但我知道怎么做?我可以只为那个字段做这件事,还是我必须打破所有字段的不引人注目的验证?这一点我没有问题,因为我已经编写了所有客户端验证,并准备好了。我已经实现了jquery,但它从未真正启动过。我完全不知所措。任何帮助都会很好。这部分没有模型。对于其他视图,我是这样做的,但是这个视图不是强类型的。我没有这些局部视图的模型。它们不是强类型。我只想使用jquery的原因之一。。。我还没有实现jquery,但是我已经实现了其他视图。所以,一旦我弄清楚是否有一种方法可以实现jquery验证调用,我就会这样做。@DmainEvent您说过我已经实现了jquery,但它实际上从未启动过。我完全不知所措。我认为代码中可能有一些问题,所以请您分享!我应该说得更清楚一点。我有一个类似的老项目,我正试图升级。验证是在那里实现的。然而,我尝试用其他视图实现简单的jQuery验证,但这不起作用,因为您需要不引人注目的ajax,并在模型上添加所需的注释等等。我的问题是,是否有办法将jquery验证放在视图上。我会把我的旧验证码放在我原来的帖子里,我很乐意按照你的建议去做。IE使用普通的旧jquery来执行验证。但我知道怎么做?我可以只为那个字段做这件事,还是我必须打破所有字段的不引人注目的验证?这一点我没有问题,因为我已经编写了所有客户端验证,并准备好了。我已经实现了jquery,但它从未真正启动过。我完全不知所措。任何帮助都会很好。这部分没有模型。对于其他视图,我是这样做的,但是这个视图不是强类型的。我没有这些局部视图的模型。它们不是强类型。我只想使用jquery的原因之一。。。我还没有实现jquery,但是我已经实现了其他视图。所以,一旦我弄清楚是否有一种方法可以实现jquery验证调用,我就会这样做。@DmainEvent您说过我已经实现了jquery,但它实际上从未启动过。我完全不知所措。我认为代码中可能有一些问题,所以请您分享!我应该说得更清楚一点。我有一个类似的老项目,我正试图升级。验证是在那里实现的。然而,我尝试用其他视图实现简单的jQuery验证,但这不起作用,因为您需要不引人注目的ajax,并在模型上添加所需的注释等等。我的问题是,是否有办法将jquery验证放在视图上。我将把我的旧验证代码放在我原来的帖子里
$("#searchByDemographics").validate({
    rules: {
        SSN: {
            require_from_group: [1, ".SSN"]
        },
        FirstName: {
            require_from_group: [1, ".demoGrphcs"]
        },
        LastName: {
            require_from_group: [1, ".demoGrphcs"]
        },
        DateOfBirth: {
            require_from_group: [1, ".demoGrphcs"]
        }
    },
    messages : {
        SSN: 'Please Enter either a valid SSN or Demographic Info below',
        FirstName: 'First name is required',
        LastName: 'Last name is required',
        DateOfBirth: 'Date of Birth is required'
    }
});