我有一个register.aspx
,它从用户那里获取一些信息并将其存储在数据库中。但是,当用户刷新页面时,我无法解决双重提交问题。这是我的registration.aspx
文件:
<form id="form1" runat="server">
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:Button ID="btnRegister" runat="server" Text="Button" onclick="RegisterUser" />
<asp:Label ID="lblErrorMessage" runat="server" Text=""></asp:Label>
</form>
这是registration.aspx.cs
文件:
protected void RegisterUser(object sender, EventArgs e)
{
if (txtUserName.Text.Length < 3)
{
lblErrorMessage.Text = "username should be minimum 3 characters, try again.";
}
}
但是,我尝试使用我的浏览器Chrome测试它。当我使用文本“a”作为用户名时,它会进入RegisterUser
函数并显示错误消息。但遗憾的是,当我尝试刷新页面时,它要求重新提交,而我期待刷新没有任何问题:
我尝试使用Response.Redirect
,但它也无效。
答案 0 :(得分:0)
我使用UpdatePanel和Template尝试了一种简单的方法:
更改主页中的代码,如下所示:
<form id="form1" runat="server" >
<asp:UpdatePanel runat="server"><ContentTemplate>
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:Button ID="btnRegister" runat="server" Text="Button" onclick="RegisterUser" />
<asp:Label ID="lblErrorMessage" runat="server" Text=""></asp:Label>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</ContentTemplate>
</asp:UpdatePanel>
</form>
我认为这将以更简单的方式解决您的问题。 如果您有任何问题,请告诉我。
答案 1 :(得分:0)
请在TextBox和按钮控件中设置causevalidation =“false”
尝试以下代码
<asp:TextBox ID="txtUserName" CausesValidation="false" runat="server"></asp:TextBox>
<asp:Button ID="btnRegister" CausesValidation="false" runat="server" Text="Button" onclick="RegisterUser" />