在我的ASP.Net MasterPage中,我有时会有大多数页面需要访问的控件。 现在,而不是使用它来访问控件
((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo";
我倾向于在MasterPage中添加一个Property,引用Control,在Page中设置@MasterType指令并访问控件,如下所示:
this.Master.BreadCrumb.Text = "foo";
我发现这种方法更容易使用,但我从来没有真正看到有人这样做,所以我想知道是否有任何理由反对它,我错过了?
答案 0 :(得分:1)
不,当许多页面正在访问它时,这是一个很好的方法。
有时候,我可能会抽象一点。例如,我可能只是在BreadCrumbText上创建一个属性,而不是简单地直接访问控件。
答案 1 :(得分:1)
使用属性比使用FindControl
更好的主意有几个原因,我很高兴您使用这种方法!
使用属性的最令人信服的理由是让我们更改控件的名称,或者将它们全部删除。现在,您有一个编译器错误,这更容易发现。例如,如果您重命名lblBreadCrumb
并且您正在使用FindControl
,则编译器将不会捕获此错误,而是您的应用程序将在运行时失败。在编译时捕获错误是语言的一个很好的特性。
您没有看到许多其他开发人员这样做的原因是因为很遗憾在Web窗体中找不到好的OO设计。