我有这个错误 - 控制< 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>
答案 0 :(得分:3)
如错误消息所示,您需要在runat="server"
标记中添加form
。这只是ASP.NET要求工作的东西。
ASP.NET处理事件和回发的方式强制了这一要求。它试图将页面的状态保持在实际页面内(称为“视图状态”),并在表单提交时将其发送回去。这是为了使无国籍网站成为有状态而发明的。
只需放入runat="server"
标记内的form
即可设置。
<form runat="server" action="ChangePassword.aspx" method="get">