编译后在我的页面上放置一个文本框后,出现上述错误:
'txtName'未声明。由于其保护级别,它可能无法访问。
当我尝试读取代码隐藏页面中文本框的值时会发生这种情况。
我不确定是什么导致了这个......任何想法?
在aspx文件中我有:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="signup.aspx.vb" Inherits="signup" %>
在codebehind aspx.vb文件中,我有:
Imports System.Data.SqlClient
Partial Class signup
Inherits System.Web.UI.Page
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
答案 0 :(得分:23)
好的,我现在解决了这个问题。这是因为我重命名了.aspx文件的副本,并且仍在使用较新版本的代码隐藏文件。
后面的代码文件正在寻找txtName.text但是在旧版本的.aspx文件中,txtName并不存在!
我从项目中排除了旧版本的页面,现在看起来运行正常。
感谢大家的帮助。
答案 1 :(得分:6)
文本框是否直接在页面上?那是什么类型的项目?它是从文件系统打开的Web应用程序或网站吗?如果它是Web应用程序,则设计人员可能无法更新YourPage.aspx.designer.cs文件。检查该文件以确保您具有txtName的定义,如:
protected global::System.Web.UI.WebControls.TextBox txtName;
如果不存在,请删除.design.cs文件,右键单击页面并选择“转换为Web应用程序。这将正确重新创建.design.cs文件。
答案 2 :(得分:4)
可能是文本框声明中缺少的:
runat="server"
答案 3 :(得分:2)
我对完全相同的错误有不同的原因,它类似于OP发现但不完全相同。 My page.aspx.designer.vb
不同步并出错。我的一个控件被定义了两次(我想是因为我在粘贴之前复制/粘贴了一个现有的控件而没有编辑ID)。一旦我删除了我可以构建的第二个声明,错误就消失了。有趣的是,VS 2010 SP1
没有列出该错误以及由于缺少该页面构建而导致的其他错误。希望这有助于其他人。
答案 4 :(得分:1)
类的排序方式是页面生成的类继承自代码隐藏类 - 它们不是局部的,而不是相反的方式。这意味着您的代码隐藏类不了解您在页面上放置的控件。如果要访问在页面本身声明的属性,则需要首先在codebehind类中声明它:
protected TextBox txtName;
然后,您可以在代码隐藏文件中访问此成员。这将正确连接以匹配页面中的控件。
答案 5 :(得分:1)
答案 6 :(得分:1)
当后面的代码中的类没有指定Public
时,我发现了这个错误。试试这个:
Partial Public Class signup <-------------Make sure the Public keyword is there
Inherits System.Web.UI.Page
...
End Class
答案 7 :(得分:1)
这就是我的情况。
- 我已在代码
后面声明了变量Protected Friend sMessage As String = ""
- 然后是aspx:&lt;%= sMessage%&gt;
出现这种情况(visual studio 2015 - asp webform project)
然后我尝试:
-clean solution
-rebuild
然后问题就消失了
如果清洁解决方案和重建不起作用
try to clean the obj directory
如果变量是asp组件
确保aspx文件中的 runat =&#34;服务器&#34;
答案 8 :(得分:0)
当我将我的asp.net网站从3.5更改为4.0时,我遇到了同样的问题。
为了解决这个问题,我逐页重新创建了整个网站,确保所有页面都具有相同的名称。
我复制了每个页面的页面内容,从3.5网站到4.0网站省略了以<%@
开头的顶行。
我在3.5到4.0网站的每个页面的代码中复制了页面类中的所有代码。
答案 9 :(得分:0)
我遇到了这个问题,通过从div中删除runat =“server”属性,即使我没有访问服务器端的div。问题在于,在客户端我尝试访问div的ClientID,如$('#&lt;%= divMultipleDaysOptions.ClientID%&gt;')。
答案 10 :(得分:0)
我得到了类似的错误,但情况有所不同。场景:我已将现有页面添加到我的解决方案的文件夹中,因此我必须更改html文件的页面标记中的某些属性(继承)的值。当我在继承属性中更改了文件夹结构时,我犯了一个错误,导致了这个错误。当文件夹结构不同时,文件后面的代码将无法访问.aspx文件中的控件。所以朋友们,当你遇到这种错误时,请看看Inherits属性值(即文件夹结构是否正确)。
答案 11 :(得分:0)
另一种可能的情况是,Page.aspx.vb文件中的类名与Page.aspx.designer.vb文件中的类名不同。这些必须相同。
答案 12 :(得分:0)
在将控件添加到最初用VS 2008 .Net 3.5到VS 2010 .Net 4的Web sete中添加控件后,我遇到了类似的问题。添加控件之后,我得到了同样的错误。当我查看页面的.designer.vb文件时,添加的控件不在那里。只需将控件添加到文件底部即可解决问题: 受保护的事件lblApprove As Global.System.Web.UI.WebControls.Label