我有这个错误-类型为'TextBox'的控件'txtUserName'必须放置在带有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>
最佳答案
如错误消息所述,您需要在runat="server"
标记中添加一个form
。这只是ASP.NET要求工作的内容。
ASP.NET处理事件和回发的方式强制执行此要求。它试图将页面状态保持在实际页面内(称为“视图状态”),并在表单提交时将其发送回去。发明此技术是为了使无状态网络变为有状态。
只需将runat="server"
标记内的form
放入,即可进行设置。
<form runat="server" action="ChangePassword.aspx" method="get">
关于c# - 类型为'TextBox'的控件'txtUserName'必须放置在带有runat = server的表单标记中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28943854/