2009-08-16 4 views
0

私はどのフィールドを検証できなかったかをユーザに通知する方法を理解しようとしています。 LINQ to SQLクラスdatacontextをセットアップして、ASP.netページからデータベースにアクセスしました。ユーザー入力はWebインターフェイスフォームから来てExcelファイルからインポートするので、検証ロジックを1か所に書きたいと思います。この背後にあるアイデアは、私がExcelからインポートするときです。私は各行のエラーメッセージを収集し、要約を表示します。論理的な場所は、LINQによって生成されたクラスをSQLに拡張するようです。ASP.netとlinq-to-sqlのErrorProvider(Windowsフォームから)?

public partial class Customer 
{ 
    partial void OnTitleChanging(string value) 
    { 
    if (!Char.IsUpper(value[0])) { 
     throw new ValidationException(
     "Title must start with an uppercase letter.");} 
    } 
} 

このアプローチの問題は、検証が失敗した最初のフィールド上で停止することである:ほとんどのドキュメントと例によると、私はこのような何かを行う必要があります。

WindowsフォームLink1で、フォームにErrorProviderコンポーネントを定義し、そのDataSourceプロパティをBindingSourceに設定すると、例外は検証されたコントロールの右に赤い円で示されます。この赤い円のツールチップに例外メッセージが表示されます。

ASP.netページに類似したものはありますか?私はリストビューでリストビューコントロールとインライン編集を使用しています。


アップデート: - 私は実際にはニック・カーバーが示唆されているものに似た何かをしました。 Link2。例外をスローする代わりに、私はエラーメッセージを記録します。

public partial class PQSSClassesDataContext  
{ 
public partial class ErrorFeilds 
    { 
     private static List<string> Messages = new List<string>(); 
     public void AddErrorMessage(string message) 
     { 
      Messages.Add(message); 
     } 
     public List<string> GetErrorMessages() 
     { 
      return Messages; 
     } 
    } 
} 

私は実際にエラーメッセージをフィールドにマップする方法に固執しています。だから、私はErrorProviderのようなものを探していた。エラーを記録するために、例外の代わりにイベントを使用しています。どのようにコードビハインドファイルから対応する失敗したフィールドをマークするか?

助けてください。

答えて

1

過去に行ったことは、DataContextにエラーコレクションがあり、それを拡張してList<ValidationError>のようなものを追加するだけです。あなたがする必要があるのは、SubmitChanges()をオーバーライドし、検証エラーがあるかどうかを確認し、中止するか、スローするかを決定します。 ASP.Netは要求ごとのライフサイクルを使用しますが、コンテキストが長くなるとエラーリストをクリアするようにしてください。

ValidationErrorクラス/オブジェクトには、すべてのクラスが実装する共通のベースまたはインターフェイスへの参照が含まれていて、必要に応じて後でそのオブジェクトを参照できるので便利です。 (たとえば、エラーラベルやその他の情報を正しい場所に投函するためのIDを取得するなど)。

例クラス:

public class ValidationError { 
    public string Message { get; set; } 
    public IBase { get; set; } 
} 

public interface IBase { 
    public long ID { get; set; } 
    public DateTime DateModified { get; set; } 
} 
+0

+1から派生した個々の検証コントロールによってASP.NETで実行されます。 – JoshJordan

0

エラーのリストを表示するには、個々の検証コントロールと連動ValidationSummary制御は、あります。しかし、WinForms ErrorProviderのアクションは、Labelコントロール

関連する問題