Can';t从C#文件访问asp:TextBox标记:名称';txtexername';在当前上下文中不存在
以aspx为例: CS.aspx:Can';t从C#文件访问asp:TextBox标记:名称';txtexername';在当前上下文中不存在,c#,asp.net,.net,visual-studio-2012,visual-studio-2013,C#,Asp.net,.net,Visual Studio 2012,Visual Studio 2013,以aspx为例: CS.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CS.aspx.cs" Inherits="CS" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CS.aspx.cs" Inherits="CS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
body
{
font-family: Arial;
font-size: 10pt;
}
input
{
width: 200px;
}
table
{
border: 1px solid #ccc;
}
table th
{
background-color: #F7F7F7;
color: #333;
font-weight: bold;
}
table th, table td
{
padding: 5px;
border-color: #ccc;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3">
Registration
</th>
</tr>
<tr>
<td>
Username
</td>
<td>
<asp:TextBox ID="txtUsername" runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ErrorMessage="Required" ForeColor="Red" ControlToValidate="txtUsername"
runat="server" />
</td>
</tr>
<tr>
<td>
Password
</td>
<td>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" />
</td>
<td>
<asp:RequiredFieldValidator ErrorMessage="Required" ForeColor="Red" ControlToValidate="txtPassword"
runat="server" />
</td>
</tr>
<tr>
<td>
Confirm Password
</td>
<td>
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password" />
</td>
<td>
<asp:CompareValidator ErrorMessage="Passwords do not match." ForeColor="Red" ControlToCompare="txtPassword"
ControlToValidate="txtConfirmPassword" runat="server" />
</td>
</tr>
<tr>
<td>
Email
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ErrorMessage="Required" Display="Dynamic" ForeColor="Red"
ControlToValidate="txtEmail" runat="server" />
<asp:RegularExpressionValidator runat="server" Display="Dynamic" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
ControlToValidate="txtEmail" ForeColor="Red" ErrorMessage="Invalid email address." />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button Text="Submit" runat="server" OnClick="RegisterUser" />
</td>
<td>
</td>
</tr>
</table>
</form>
</body>
</html>
当我尝试编译时,我得到以下结果:
当前上下文中不存在名称“txtUsername”
当前上下文中不存在名称“txtPassword”
当前上下文中不存在名称“txtEmail”
知道为什么会这样吗?
txtexername
在.aspx
文件中声明。问题在于文件的声明。它应该是这样的:
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="CS.aspx.cs"
Inherits="CS" %>
它是一个.designer.cs文件,其中保存了.cs文件要使用的aspx对象的定义
通过指定CodeFile
表示您使用的是网站项目类型文件,而不是WebForm
指定codebeahind
而不是CodeFile
,这将允许VS将定义添加到.designer.cs文件中
编辑:
如果没有.designer文件,可以通过以下方式创建一个:
看起来@mellamokb也有同样的想法。:) 缺少“CS.aspx.designer.CS”文件。找到CS.apsx所在的文件夹,并创建一个名为“CS.aspx.designer.CS”的文本文件。您能否再次检查所有三个文本框是否都在
CS.aspx.designer.CS
中定义?通常情况下,这是由VS自动生成的,但有时可能会出现故障。可能您的aspx文件中存在错误,导致它无法在designer.cs文件中生成代码。页面上还有其他错误吗?这是一个已迁移到VS 2012的旧项目吗?你会使用CodeFile
属性似乎有些奇怪,我认为这是旧网站项目类型的一部分。我刚刚创建了与你完全相同的东西,我可以访问它们。。。问题主要出现在设计器文件中。打开它,看看它们是否存在。。。如果没有,我建议删除该网页并创建一个新网页以消除该问题。我可以复制他的错误。更改为CodeBehind
解决了这个问题。我将设计器文件添加到您的答案中,非常感谢!你的答案不一定是错的,但是一个更全面的答案已经在几个月前发布并被接受了。
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="CS.aspx.cs"
Inherits="CS" %>