为什么我的提交按钮提交两次?

时间:2012-08-30 08:24:44

标签: c# asp.net html double-submit-problem

HTML页面

<body>
  <form id="form1" action="Default.aspx" method="post">
    <input runat="server" id="txtuser" type="text" />
    <input runat="server" id="txtpwd" type="password" />
    <input type="submit" value="Login"/>
 </form>
</body>

代码隐藏

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
   {
        Login();
   }
}

private void Login()
{
   if (checkUser(Request.Params["txtuser"],Request.Params["txtpwd"]))
   {
        Response.Redirect("Success.aspx");//if success
   }
}

我正在为旧手机版(如诺基亚N70)开发一个面临问题的网页。当我提交用户名和密码时,请检查用户返回true以重定向到新页面。但它不会重定向到success.aspx。所以我在Response.Redirect代码上调试点,它可以在那里停止并继续运行成为错误,因为获取用户名和密码为null。然后我意识到它加载了两次页面。怎么解决?

2 个答案:

答案 0 :(得分:3)

您希望在有PostBack时登录。不是相反。

更改

if (!Page.IsPostBack)

if (Page.IsPostBack)

确保在代码前端中将AutoEventWireup设置为true:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"...

否则Page_Load永远不会被解雇。

答案 1 :(得分:2)

您应该以正确的方式使用表单身份验证,如解释here

你应该为你的重定向做这样的事情:

if (checkUser(userName.Text, password.Text))
{
    FormsAuthentication.RedirectFromLoginPage(userName.Text, false);
}