C# 母版页-引用控件作为属性的缺点?
在我的ASP.Net母版页中,我有时有一些控件需要被大多数页面访问。 现在,不要使用它来访问控件C# 母版页-引用控件作为属性的缺点?,c#,asp.net,controls,reference,master-pages,C#,Asp.net,Controls,Reference,Master Pages,在我的ASP.Net母版页中,我有时有一些控件需要被大多数页面访问。 现在,不要使用它来访问控件 ((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo"; 我倾向于在母版页中放置一个引用控件的属性,在页中设置@MasterType指令,然后像这样访问控件: this.Master.BreadCrumb.Text = "foo"; 我发现这种方法更容易使用,但我从未见过有人这样做,所以我想知道是否有什么好的理由反对
((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo";
我倾向于在母版页中放置一个引用控件的属性,在页中设置@MasterType指令,然后像这样访问控件:
this.Master.BreadCrumb.Text = "foo";
我发现这种方法更容易使用,但我从未见过有人这样做,所以我想知道是否有什么好的理由反对我错过了这种方法?不,当许多页面都在访问它时,这是一种很好的方法
有时候,我可能会把它抽象一点。例如,与直接访问控件不同,我可以在母版页上创建一个属性,如BreadCrumbText。使用属性比使用
FindControl
要好得多。出于几个原因,我很高兴您使用了这种方法!
使用属性最有说服力的原因是,假设您更改了控件的名称,或者将其一起删除。现在,您有一个编译器错误,这更容易发现。例如,如果您重命名lblBreadCrumb
并且正在使用FindControl
,编译器将不会捕获此错误,相反,您的应用程序将在运行时失败。在编译时捕获错误是语言的一个重要特性
你看不到其他开发人员这么做的原因是,很不幸,在Web表单中几乎找不到好的OO设计 编译时错误非常重要!谢谢你指出这一点,我从来没有想过。