1

我正在使用FluentValidation和ASP.NET MVC 3.使用FluentValidation对属性进行多重验证

我只是有几个关于验证的问题。

我有我的验证我的视图模型的设置是这样的:

public NewsViewModelValidator() 
{ 
    // Title is required 
    RuleFor(x => x.Title) 
     .NotEmpty() 
     .WithMessage("Title is required"); 

    // Title must be less than or equal to 100 characters 
    RuleFor(x => x.Title) 
     .Length(1, 100) 
     .WithMessage("Title must be less than or equal to 100 characters"); 
} 

这是它必须怎样做,或者我需要把它列入1条语句?

我需要对Title属性进行2次验证,它的名称必须是必填字段并且不能超过100个字符。以下是触发验证后的源代码:

<td valign="top"><b>Title: *</b></td> 
<td> 
    <input class="input-validation-error" data-val="true" data-val-length="Title must be less than or equal to 100 characters" data-val-length-max="100" data-val-length-min="1" data-val-required="Title is required" id="Title" max="100" name="Title" size="100" type="text" value="" /><br> 
    <span class="field-validation-error" data-valmsg-for="Title" data-valmsg-replace="true">Title is required</span> 
</td> 

它使用2个不同的类,每个验证类型一个。为什么是这样?现在我的表格不一致。我有另一个必需的输入字段,用于此的类是input-validation-error,高于它是字段验证错误。

如何启用客户端验证?有人告诉我,如果我在我的web.config中设置下面的代码,然后客户端将自动打开:

<appSettings> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings> 

客户端验证不会被触发。我需要包含jQuery库还是为我完成?

回答

1

您需要将它们添加到您的_Layout.cshtml:

<script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>