Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# asp.net登录控件:什么';怎么了?_C#_Asp.net_Login Control - Fatal编程技术网

C# asp.net登录控件:什么';怎么了?

C# asp.net登录控件:什么';怎么了?,c#,asp.net,login-control,C#,Asp.net,Login Control,我正在使用ASP.NET应用程序,在母版页C#代码中,我希望访问登录控件,因此我有以下代码: Login login = new Login(); login = this.Master.FindControl("login") as Login; 但是,当这一行 login = this.Master.FindControl("login") as Login; 被执行 我看不出有什么不对 谢谢。如果母版页中有上述代码,请尝试删除代码的母版部分 比如说 login = this.FindC

我正在使用ASP.NET应用程序,在母版页C#代码中,我希望访问登录控件,因此我有以下代码:

Login login = new Login();
login = this.Master.FindControl("login") as Login;
但是,当这一行

login = this.Master.FindControl("login") as Login;
被执行

我看不出有什么不对


谢谢。

如果母版页中有上述代码,请尝试删除代码的母版部分

比如说

login = this.FindControl("login") as Login;
这样做之所以有效,是因为当前母版页没有嵌入到另一个母版页中。因此,在尝试访问母版的母版页(即this.master.FindControl())时,将出现“object not set”错误


只是想知道,如果是这种情况,是否有一个原因使您无法通过其名称访问控件?

如果上面提到的代码在母版页中,请尝试删除代码的母版部分

比如说

login = this.FindControl("login") as Login;
这样做之所以有效,是因为当前母版页没有嵌入到另一个母版页中。因此,在尝试访问母版的母版页(即this.master.FindControl())时,将出现“object not set”错误


只是想知道,如果是这种情况,是否有一个原因使您不能通过其名称访问该控件?

您应该能够通过ID元素直接引用登录控件

在标记中:

<asp:Login runat="server" ID="MainLogin" ....... />

您应该能够通过ID元素直接引用login控件

在标记中:

<asp:Login runat="server" ID="MainLogin" ....... />

如果我没有看错您的问题,您有一个母版页,您正试图使用FindControl在该页面上查找名为login的控件。如果是这样,那么您应该这样做:

login = this.FindControl("login") as Login; 
因为:

login = this.Master.FindControl("login") as Login; 
将在母版页中查找嵌套当前母版页的控件

换句话说,如果您有一个嵌套的母版页(例如Site.master),那么最后一行代码可以工作,如果登录控件位于Site.master中,那么最后一行代码也可以工作,如果登录控件位于Section.master中,那么最后一行代码也可以工作


(希望这是有意义的。)

如果我没看错你的问题,你有一个母版页,你正试图使用FindControl在该页面上找到一个名为login的控件。如果是这样,那么您应该这样做:

login = this.FindControl("login") as Login; 
因为:

login = this.Master.FindControl("login") as Login; 
将在母版页中查找嵌套当前母版页的控件

换句话说,如果您有一个嵌套的母版页(例如Site.master),那么最后一行代码可以工作,如果登录控件位于Site.master中,那么最后一行代码也可以工作,如果登录控件位于Section.master中,那么最后一行代码也可以工作


(希望这是有意义的。)

在同一母版页上。您的登录控件在LoginView中吗?在同一母版页上。您的登录控件在LoginView中吗?您不想使用page.master.FindControl吗?为什么要这样做?我在这里遗漏了什么吗?这些控件只能通过母版页代码隐藏类中的ID访问,所以这就是我使用该页的原因。FindControl(“”@Gog-您的登录控件是否在LoginView中?不,它不是。。。看看上面David Stratton的答案-一切都很好地描述了为什么我无法访问控件以及为什么会出现异常您不想使用Page.Master.FindControl吗?为什么要?我在这里遗漏了什么吗?这些控件只能通过母版页代码隐藏类中的ID访问,所以这就是我使用该页的原因。FindControl(“”@Gog-您的登录控件是否在LoginView中?不,它不是。。。看看上面David Stratton的答案-一切都很好地描述了为什么我无法访问控件以及为什么异常大量出现。非常感谢,这解决了我的问题。对于你的问题-是的,这对我来说也很奇怪,我无法仅通过控件的ID访问它,因此我在.net的一本书中搜索了答案,发现在母版页中可以通过这种方式访问控件…非常感谢,这解决了我的问题。对于你的问题-是的,这对我来说也很奇怪,我不能只通过控件的ID访问它,所以我在一本.net的书中搜索了答案,发现在母版页中可以通过这种方式访问控件。。。