![](/img/trans.png)
[英]Cannot access controls like Textboxes, Labels via threads in ASP.NET application
[英]cannot access controls in asp.net application
我正在使用ASP.NET VB.NET Web应用程序。 我从内部的另一个应用程序继承了一堆表格。 在登录页面上工作时,我遇到了一个非常奇怪的问题。
这是我的代码的缩写版本:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
<table>
<tr>
<td>
<span id="Span1" runat="Server" style="Color: Red"></span>
</td>
</tr>
<tr>
<td>
<asp:Login ID="Login1" runat="server">
<LayoutTemplate>
<table>
<tr>
<td>
<span id="Span1" runat="Server" style="Color: Red"></span>
</td>
</tr>
</table>
</LayoutTemplate>
</asp:login>
</td>
</tr>
</table>
</asp:Content>
我在页面的“ Content
部分内的Web表单内有一个<span id="span1">
。 我可以在我的CodeBehind中轻松访问它,并做我想做的任何事情。 但是,如果我移动该跨度并将其放在页面的<asp:login>
部分中,它似乎无法识别它,也不会让我在后面的代码中访问它,这给了我一条弯曲的蓝线并说
未声明span1。 由于保护级别,它可能无法访问
这一点来自设计器中Web表单的顶部
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Login.aspx.vb" Inherits="_Default" MasterPageFile="~/Site.master" %>
这一点来自Login.aspx.vb页面
Partial Class _Default
再说一遍, id="span1"
在上面的代码中显示的地方工作得很好,但是当我将其移动到内部时,我将不再引用它。 由于我正在谈论此问题,因此,我无法在其中添加任何新控件,因为我无法在vb.net中引用任何其他控件。 (此表格几乎是从另一个项目复制的,一切正常,但我不确定为什么会有这个奇怪的问题)
我注意到很多人都有类似的问题,但就我而言,我正在使用<asp:login>
,但我真的不确定它如何影响我的控件。
编辑: <span id="Span1" runat="Server" style="Color: Red"></span>
您需要在Login1控件上使用FindControl
HtmlGenericControl hgc = Login1.FindControl("Span1") as HtmlGenericControl;
hgc.InnerText = "Span Found";
VB
Dim hgc As HtmlGenericControl = CType(Login1.FindControl("Span1"),HtmlGenericControl)
hgc.InnerText = "Span Found"
要访问服务器端的控件,必须在标签上包含“ runat ='server'”属性。 那就是告诉.NET的原因,任何给定的控件都应该在服务器端以及前端都可以使用。
请注意,它将更改在呈现的HTML中生成的ID
<span id="span1" runat="server"></span>
根据我的意见,并根据OP的要求...
您在命名容器方面遇到了问题。
当<span runat="server">
在<asp:Login><LayoutTemplate>
它作为对象存在于页面中,您可以直接对其进行引用。
一旦在该<LayoutTemplate>
它,它就会成为<asp:Login>
控件的子代。
因此,要访问该控件,您可以使用以下命令...
CType(Logon1.FindControl("span1"), HtmlGenericControl).InnerHtml = "hello"
FindControl
将带回一个对象,但是需要先将其“装箱”为正确的类型,然后才能访问InnerHtml
属性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.