Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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
Can';t从C#文件访问asp:TextBox标记:名称';txtexername';在当前上下文中不存在_C#_Asp.net_.net_Visual Studio 2012_Visual Studio 2013 - Fatal编程技术网

Can';t从C#文件访问asp:TextBox标记:名称';txtexername';在当前上下文中不存在

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/

以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/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文件,可以通过以下方式创建一个:

  • 打开CS.aspx所在的目录
  • 创建一个新的文本文件并将其命名为CS.aspx.designer.CS
  • 在Visual Studio中,显示项目中的所有文件
  • 深入到CS.aspx.CS,您将看到您的文件
  • 将其包括在项目中
  • 更改CS.aspx文件中的某些内容并保存它
  • 这会将您的文件转换为Webform文件


    看起来@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" %>