C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: C#での入力チェックについて


(過去ログ 126 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■75024 / inTopicNo.1)  C#での入力チェックについて
  
□投稿者/ nagiko (1回)-(2015/02/19(Thu) 18:16:52)

分類:[C#] 

C#での入力チェックについて、質問があります。
 [環境]
  .Net Framework 4.5
  Microsoft Visual C# 2012

開始日、終了日を入力する2つのテキストボックスがある画面で、
検索ボタンの押下時に、開始日が終了日よりも前であることをチェックする「ValidationAttribute」を作成したいのですが、
開始日のAttributeで、終了日の入力値を受け取る方法が分かりません。


具体例は以下のとおりです。

[ViewModel側の記述]
public class TestViewModel
{
/// 検索条件 テスト開始日
[DateFromTo(ToDate = "TestDateTo")] ////←★ここで、テスト終了日の入力値を渡したい
public string TestDateFrom { get; set; }

/// 検索条件 テスト終了日
public string TestDateTo { get; set; }
}



[Arribute側の記述]
public class DateFromToAttribute : ValidationAttribute
{
public String ToDate;

// コンストラクタ
public DateFromToAttribute()
{
this.ErrorMessage = Resources.ResourceManager.GetString("ValidationDateFromToErrMessage");
}

public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentCulture, ErrorMessageString, name);
}

public override bool IsValid(object value)
{
// 入力値が空の場合は検証をスキップ
if (value == null)
{
return true;
}

//★ここで、「テスト終了日」の入力値を取得したい。

return true;
}
}


引用返信 編集キー/
■75025 / inTopicNo.2)  Re[1]: C#での入力チェックについて
□投稿者/ Hongliang (283回)-(2015/02/19(Thu) 18:29:42)
RequiresValidationContextをオーバーライドしてtrueを返させることでValidationContextを受け取れるようにして、
IsValid(object)ではなくIsValid(object, ValidationContext)の方をオーバーライドすれば、
ValidationContext::ObjectInstanceで検証するプロパティを持っているオブジェクトを取得できます。
あとはこのオブジェクトからリフレクション(object::GetType()で取得できるTypeオブジェクトからの一連の操作)で指定した名前のプロパティの値を取得するコードを書くことになるでしょう。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -