2011-01-10 2 views
1

私のASP.Netマスターページには、ほとんどのページでアクセスする必要のあるコントロールがあることがあります。 は今の代わりにコントロールにアクセスするためにMasterPage - プロパティとしてコントロールを参照していますか?

((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo"; 

これを使用して、私は、コントロールを参照して、マスターページにプロパティを置くページに@MasterTypeディレクティブを設定して、このようなコントロールにアクセスする傾向がある:

this.Master.BreadCrumb.Text = "foo"; 

私はこのアプローチがずっと使いやすくなっていますが、実際に誰かがこのようにしたことはありませんでしたので、私には間違った理由があるのでしょうか?

答えて

1

プロパティを使用することはいくつかの理由でFindControlを使用するよりもはるかに良いアイデアです。このアプローチを使用していることをうれしく思います! プロパティを使用する最も魅力的な理由は、コントロールの名前を変更したり、コントロールをまとめて削除したりすることです。さて、コンパイルエラーがあります。これははるかに簡単です。たとえば、lblBreadCrumbの名前を変更してFindControlを使用している場合、コンパイラはこのエラーを検出せず、実行時にアプリケーションが失敗します。コンパイル時にエラーをキャッチすることは、言語の大きな特徴です。

これをやっている多くの開発者がいない理由は、残念なことにWebフォームでOO設計がうまく機能していないためです。

+0

コンパイル時に大きなエラーが発生しました!それを指摘してくれてありがとう、私の心を越えたことはありません。 – magnattic

1

いいえ、それは多くのページがそれにアクセスする際の素晴らしいアプローチです。

時々、私はそれをもう少し抽象化するかもしれません。たとえば、単にコントロールに直接アクセスするのではなく、BreadCrumbTextのようにマスターページにプロパティを作成することができます。

関連する問題