1

FluentValidation と ASP.NET MVC 3 を使用しています。

検証に関していくつか質問があります。

ビューモデルの設定を次のように検証しています。

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 つの検証を行う必要があります。name は必須フィールドである必要があり、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>

検証タイプごとに1つずつ、2つの異なるクラスを使用しています。どうしてこれなの?今、私のフォームは一貫していません。必要な別の入力フィールドがあり、これに使用されるクラスはinput-validation-errorで、その上はfield-validation-errorです。

クライアント側の検証を有効にするにはどうすればよいですか? web.config に次のコードを設定すると、クライアント側が自動的に有効になると言われました。

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

クライアント側の検証はトリガーされません。jQuery ライブラリを含める必要がありますか、それとも自動的に行われますか?

4

1 に答える 1

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>
于 2010-12-21T23:06:33.647 に答える