C# 在母版页中找不到类型或命名空间名称

C# 在母版页中找不到类型或命名空间名称,c#,namespaces,C#,Namespaces,我使用本教程将母版页的内容转换为内容页 但是当我试图用这种语法获取母版页的内容时,我得到了以下错误 找不到类型或命名空间名称 语法: string getProcess = ((MyMasterPage)this.Master).ProcessDropDownListValue; 据我所知,您希望访问内容页中的母版页控件。实现这一点的简单方法是,例如,您在母版页上有一个标签控件,可以在内容页上访问它。使用: Label MasterPageLabel = this.Master.FindCo

我使用本教程将母版页的内容转换为内容页

但是当我试图用这种语法获取母版页的内容时,我得到了以下错误

找不到类型或命名空间名称

语法:

string getProcess = ((MyMasterPage)this.Master).ProcessDropDownListValue;

据我所知,您希望访问内容页中的母版页控件。实现这一点的简单方法是,例如,您在母版页上有一个标签控件,可以在内容页上访问它。使用:

 Label MasterPageLabel = this.Master.FindControl("lbl") as Label;
    Response.Write(MasterPageLabel.Text);

我看不出您在哪里使用
名称
。除此之外,不要使用这种方法在内容页的主窗体中获取控件的引用。相反,使用公共属性返回
DropDownList
,甚至更好,只返回所需内容,例如
int-SelectedProcess
。通常,内容不应直接访问主机的控件。这是硬接线,这与母版页的目的背道而驰。您也无法在不中断所有页面的情况下轻松更改控件的类型。但决不要在生产代码中使用此代码。你是在用它的内容硬连接主机。在运行时不中断代码的情况下,您不能稍后更改ID。以后不能更改控件的类型。如果控件位于子控件(如
Repeater
)中,则无论如何都会失败。正确的方法是在主控中提供一个具有有意义的名称的属性,该属性返回相关信息,而不是更多。@Tim为什么对这个答案评级较低。如果对提问者有帮助,问题是什么?提问者也并没有要求你们教他做这件事的有效方法,这是一个语法问题。如果这种方法在所有情况下都没有用处,那么为什么Microsoft在c#asp.net中提供了这种方法。如果您必须在非常特定的情况下获取控件的引用,这种方法会很有帮助。例如,如果您在按钮单击事件的处理程序中,并且该按钮位于
RepeaterItem
GridViewRow
中。在这里,您可以通过(伪代码):
sender.NamingContainer.FindControl(“OtherControlID”)
获取同一项/行中的任何其他控件。否则你就没有机会控制局面。“全局”
FindControl
只是一种糟糕的方法,在生产代码中使用得太多了。这是一颗滴答作响的定时炸弹。对于新手来说,应该尝试这些方法,以便更好地理解结构,即使它可能不被推荐……但无法理解为什么要降低速率……初学者应该从正确的方法开始,否则他们会永远使用错误的方法,或者直到老板说他们应该这样做。我经常看到这个错误,每次都会得票。我已经将其设置为0,以防止许多初学者认为这是最好的方法。