by WebSurfer
2010年8月6日 17:26
Web カスタムコントロールでは、Visual Studio でプロパティの初期値を設定する際、入力値をチェックして条件に合わなければ例外をスローするようにできます。以下の画像のような感じです。
具体的には、例えば以下のように、値の設定時に入力値をチェックして条件に合わなければ例外をスローするようにコーディングしたとします。
namespace CustomControlThrowExceptionTest
{
public class MyControl : WebControl
{
public decimal MaxValue
{
get
{
object obj = ViewState["MaxValue"];
return (obj != null) ? (decimal)obj : Decimal.MaxValue;
}
set
{
if (value < MinValue)
{
throw new Exception("MaxValueException");
}
ViewState["MaxValue"] = value;
}
}
public decimal MinValue
{
get
{
object obj = ViewState["MinValue"];
return (obj != null) ? (decimal)obj : Decimal.MinValue;
}
set
{
if (MaxValue < value)
{
throw new Exception("MinValueException");
}
ViewState["MinValue"] = value;
}
}
・・・中略・・・
}
}
上記のプロパティを含む Web カスタムコントロールを作って、それをページに配置します。
そして、Visual Studio のプロパティウィンドウで、例えば、まず MaxValue を 100 に設定し、次に MinValue に 200 を入力すると、上の画像のようなダイアログが現れて設定の誤りを知らせてくれます。
コンパイルして Bin フォルダに配置しても、App_Code フォルダにソースのままファイルを置いても同じ動作をします(条件をチェックして例外をスローします)。
Web ユーザーコントロールの場合は、チェックは実行時でないとできません(間違った初期値が設定できてしまいます)。
知ってました? こんなことは常識と言われるかもしれませんが、それを知った当時、Web ユーザーコントロールしか知らない未熟者だった自分には驚きでした。