Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 母版页-引用控件作为属性的缺点?_C#_Asp.net_Controls_Reference_Master Pages - Fatal编程技术网

C# 母版页-引用控件作为属性的缺点?

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"; 我发现这种方法更容易使用,但我从未见过有人这样做,所以我想知道是否有什么好的理由反对

在我的ASP.Net母版页中,我有时有一些控件需要被大多数页面访问。 现在,不要使用它来访问控件

((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo";
我倾向于在母版页中放置一个引用控件的属性,在页中设置@MasterType指令,然后像这样访问控件:

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

我发现这种方法更容易使用,但我从未见过有人这样做,所以我想知道是否有什么好的理由反对我错过了这种方法?

不,当许多页面都在访问它时,这是一种很好的方法


有时候,我可能会把它抽象一点。例如,与直接访问控件不同,我可以在母版页上创建一个属性,如BreadCrumbText。

使用属性比使用
FindControl
要好得多。出于几个原因,我很高兴您使用了这种方法! 使用属性最有说服力的原因是,假设您更改了控件的名称,或者将其一起删除。现在,您有一个编译器错误,这更容易发现。例如,如果您重命名
lblBreadCrumb
并且正在使用
FindControl
,编译器将不会捕获此错误,相反,您的应用程序将在运行时失败。在编译时捕获错误是语言的一个重要特性


你看不到其他开发人员这么做的原因是,很不幸,在Web表单中几乎找不到好的OO设计

编译时错误非常重要!谢谢你指出这一点,我从来没有想过。