1


0

Asp.net Mvc2 Data Annotations Validation(クライアント側は機能しますが、サーバー側は機能しませんか??)

メタデータアノテーションを含むエンティティモデルを使用しています。 私のコントローラーメソッドは次のようになります…​

        if (!ModelState.IsValid)
        {
            return View(model);
        }
        else
        {
            UpdateModel(model);
            repo.Save();
            return RedirectToAction("Index");
        }

ビューでクライアント側の検証を有効にすると、メタデータクラスから属性ごとにエラーが発生します。 クライアント側の検証を除外すると、エラーの概要を含むビューを返すのではなく、DBへの保存からエラーがスローされます。

これが私のビューの上部です。

<% using (Html.BeginForm())
   {%>
<%: Html.ValidationSummary(true) %>

デバッグとリリースモードでデバッグなし(ctrl + f5)で実行し、ブレークポイントとデバッグ(f5)を設定しようとしましたが、サーバー側検証なしでクライアント側検証を取得するのは奇妙に思えます。 私はここで何が足りないのですか?

1 Answer


1


UpdateModelは、フォームコレクション、ルーティングパラメーターなどからモデルを作成します。 サーバー側で検証を行います。 更新後に* ModelState.IsValidを確認する必要があります。 通常のパターンは…​

if (!TryUpdateModel(model))
{
  // Validation Failed...
  return View(model);
}

// Validation Passed...

TryUpdateModelは例外をキャッチし、発生した場合はfalseを返すことに注意してください。 そうでない場合は、ModelState.IsValidを返すだけです。