2009-03-16 10 views
8

標準フォームを検証しようとしていますが、標準の検証コントロールを使用できませんか?私が探しているところは、以下のようなものを試してみるようです。ASP.NET MVC RC2 - 通常の検証オプションを使用できないのはなぜですか?例えばRequiredFieldValidator

<%= Html.ValidationSummary() %> 

<% using (Html.BeginForm()) {%> 

    <fieldset class="fields"> 
     <legend>Create New Contact</legend> 
     <p> 
      <label for="task">Task Name:</label> 
      <%= Html.TextBox("task") %> 
      <%= Html.ValidationMessage("task", "*") %> 
     </p> 
     <p class="submit"> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 

<% } %> 

私は標準コンポーネントを使用できると思っていましたか?どんな指針も素晴らしいでしょう!

答えて

9

ASP.NET MVCは、通常のASP.NETとはまったく異なる考え方を使用しています。したがって、いくつかのマイナーな例外を除いて、ASP.NET MVCではほとんどのASP.NETコントロール(など)は動作しません。他のものとは別に、彼らが通常何かを行うページライフサイクルのポイントは単に存在しません

は、サーバで、またはあなたがクライアント側で検証を行う場合、あなたはまだ(別途)それをしなければならないこと

注意など、IDataErrorInfoを使用することによりjQuery validation plug-in、例えば、これを行う方法があります。これらの厄介なブラウザは信頼できません; -p

+0

私はそれが単なるサーバー側であることを嬉しく思っていますが、そのためのHtml.ValidationMessageオプションは、標準コンポーネントに対するMVCの答えではありませんか? – Andrew

+0

私は恐れていることについて私は知らない。私はスコット・グーが自分のブログで検証済みのものをいくつか挙げていることを知っています:http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now -available.aspx –

3

ASP.NET MVCでは、従来のASP.NETコントロールのほとんどがフレームワークでサポートされていないため、これらのコントロールが動作するようにこれらのコントロールをページに組み込む必要があります。ビューステートとあいまいなjavascript関数のようなものは、どこでもうっとりしていました。

3

あなたが話しているバリデータは、ウェブフォームとウェブコントロールの領域に属します。 ASP.NET MVCでは、ビュー内で行うすべてが純粋なHTMLを生成します。 Valdiatorsは本質的にLabel Webコントロールであり、もはや利用できないビューステートが必要です。

2

ASP.NETバリデータはもう動作しませんが、タスクを簡略化するためにいくつかの作業が行われています。私は例えばxValを使いましたが、それはまともな仕事をし、JQueryの検証と統合することさえありますが、そのようなものを使う前にバリデーションの仕組みを学ぶことをお勧めします。

単純化すると、2つのコレクションを保持するViewDataにエラーコレクションがあり、1つはすべてのフォームフィールドを参照し、もう1つはそれらに関連付けられたエラーのリストです。これはバインディング時または手動で作成され、エラーがある場合は、サマリーまたはフィールドの隣に表示されます(その目的のためにHTMLヘルパーを使用します)。

フレームワークは自動的にコレクションにデータを挿入し、検証ルールをクライアントサイドスクリプトに変換できますが、本質的にMVCで検証がどのように機能するかを学習しています。

0

私が知っているコンポーネントはありません。あなたは

if (String.IsNullOrEmpty(username)) 
    { 
     ModelState.AddModelError("username", "You must specify a username."); 
    } 

は、その後、あなたの編集フォームに戻り(などかupdatemodelを使用)、このような検証を自分で行う必要があるとしているとにModelStateエラーが検証概要に表示されます。

バリデーションフレームワークlike xvalがありますが、それはあなたが探しているものかどうかわかりません。

関連する問題