検証

2011-12-14 8 views
0

私はモデルクラスがあります。検証

public class YearlyChageRate 
{ 
    public int Year { get; set; } 
    public double Rate { get; set; } 
} 

を、私はYeaeがユニークかノーであると、条件年に独自のアプリケーションではないことを確認したいがusers.Howにエラーメッセージを表示することができます私は、年のフィールドが繰り返されているかどうかをチェックしますか?

+0

このチェックはどこで実行しますか?一年一意であることはどういう意味ですか?ユニークな場所?データベースなどで? –

+0

データベース内で一意です。サーバー側をチェックして、ユーザーにメッセージを表示します。 – Shayan

答えて

1

が良い例です: あまりにhttp://tugberkugurlu.com/archive/asp-net-mvc-remote-validation-for-multiple-fields-with-additionalfields-property

そして、ここで:MVC validation for unique

あなたは、データベースに固有の値のチェックを実行するには、モデルのリモート属性を使用することができます。

これは、リモート属性の正式な例である:http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

そしてもう一つ:http://www.a2zdotnet.com/View.aspx?Id=198

1

ビューモデルで[Remote]検証属性を使用できます。ここで

+0

お返事ありがとうございます – Shayan

1

あなたが検証し、DBに対するチェックのため[Remote]属性のDataAnnotations属性を使用することもできますが、それは非常に良いデザインではありません選択。

私に説明してみましょう:

  • データアクセスは、データ層は、問題
  • 検証が問題
  • ユーザー入力とフィードバックが問題

を持つUIでビジネス層でありますDataAnnotations、あなたは1で3をミックスしています。それは速くなりますが、確かにうまく設計されていません。

このようにあなたは、より多くのdisciplinateなアプローチを試みることができる:

  • が内部であなたのchoicheの検証フレームワークを使用して検証を行い、パラメータとして自分のオブジェクトを取るビジネスレベルでのメソッドを持っています。
  • このメソッドは、検証が成功した場合にのみオブジェクトを永続化するためにデータアクセスを呼び出します。
  • このメソッドは、検証されたオブジェクトと、何も検証しなかった場合はフィールド/エラーのコレクションのUIを常に返します。
  • あなたのUIでメソッドの出力を読むとき、エラーがなければ成功ページを表示するか、返された検証エラーでフォームを再表示することができます。これを行うには、POSTメソッドでページを表示しないでください。PRG patternの使用を強くお勧めします。 GoogleについてはPRG patternをご覧ください。 MvcContribにはModelStateToTempDataと呼ばれる素敵なActionFilterがあり、PRGパターンの実装を簡単なものにしています。