仅在字段可见时才需要验证

Pra*_*sad 22 jquery requiredfieldvalidator jquery-validate client-side-validation asp.net-mvc-3

[Required]在ASP.NET MVC 3中使用该属性进行客户端验证.

该课程看起来像:

public class User
{
    [Required(ErrorMessage = "First Name is required")]
    public string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望FirstName只有在可见的情况下才能验证该字段,该字段仅在某些条件下显示.我怎样才能做到这一点?

我使用了以下内容,但它仍然希望验证该隐藏字段的必填字段.

$('#registerForm').validate({ ignore: ":not(:visible)" });
Run Code Online (Sandbox Code Playgroud)

Pra*_*sad 14

通过@Josiah的一些有用提示,我能够达到我的要求.

添加RequiredIfAttribute类和所需的javascript.请参阅ASP.NET MVC 3中的条件验证

并在类中添加RequiredIf属性:

public class User
{
[RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

在aspx中:

@Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" })
@Html.ValidationMessageFor(model => Model.FirstName)
@Html.Hidden("hFirstName")
Run Code Online (Sandbox Code Playgroud)

hFirstName如果隐藏了FirstName字段,则将值设置为"true",如果可见,则设置为"false".

魔术适用于这些变化.感谢@Josiah Ruddell的回答


Jos*_*ell 7

我会创建一个有条件的必需属性.有创建一个与jQuery验证的好文章在这里.

另一种选择:您可以引用提供此功能和客户端脚本的项目,如Foolproof validation(codeplex).

此外,您可以使用ajax加载部分视图,以便在隐藏时它们永远不会出现在页面上.这将完全避免条件验证.