必须将带有'TextBox'类型的控件'txtUserName'放在带有runat = server的表单标记内

时间:2015-03-09 14:00:54

标签: c# asp.net forms visual-studio-2010

我有这个错误 - 控制< txtUserName'类型' TextBox'必须放在带有runat = server的表单标记内。我无法摆脱它,我的文本框放在一个带有runat = server的表单标签内。

我要点击的页面是我的重置密码'页面我希望用户能够输入他们的用户名,一旦他们按下重置密码按钮,它就会将他们带到允许他们更改密码的页面。

以下是我目前正在使用的代码。

<head runat="server">
    <title></title>
</head>
<body>
   <div style="font-family:Arial">
    <table style="border: 1px solid black; width:300px">
        <tr>
            <td colspan="2">
                <b>Reset my password</b>
            </td>
        </tr>
        <tr>
            <td>
                User Name
            </td>    
            <td>
                <form action="ChangePassword.aspx" method="get"> 
                <asp:TextBox ID="txtUserName" Width="150px" runat="server" 
                ontextchanged="txtUserName_TextChanged">
                </asp:TextBox>

                </form>
            </td>    
        </tr>
        <tr>
            <td>

            </td>    
            <td>
                <asp:Button ID="btnResetPassword" runat="server" 
                Width="150px" Text="Reset Password" onclick="btnResetPassword_Click" />
            </td>    
        </tr>
        <tr>
            <td colspan="2">
                <asp:Label ID="lblMessage" runat="server"></asp:Label>
            </td>    
        </tr>
    </table>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

如错误消息所示,您需要在runat="server"标记中添加form。这只是ASP.NET要求工作的东西。

ASP.NET处理事件和回发的方式强制了这一要求。它试图将页面的状态保持在实际页面内(称为“视图状态”),并在表单提交时将其发送回去。这是为了使无国籍网站成为有状态而发明的。

只需放入runat="server"标记内的form即可设置。

<form runat="server" action="ChangePassword.aspx" method="get">