2012-08-30 110 views
2

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代码,它可以停在那里,我继续运行成为错误,因为获取用户名&密码为空。然后我意识到它已经加载了两次页面。如何解决它?

+0

我认为这是乌拉圭回合上checkUser方法问题 –

+0

你用表单身份验证和成功页面未被授权?您最好使用ASP.NET窗体身份验证,如http://msdn.microsoft.com/en-us/library/ff647070.aspx – slfan

+0

您的HTML页面是Default.aspx页面? –

回答

3

你想登录时,有一个回发。而不是相反。

变化

if (!Page.IsPostBack) 

if (Page.IsPostBack) 

确保您已在代码前设置AutoEventWireup为true:

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

否则的Page_Load永远不会被解雇。

+0

sani如果Page.IsPostBack返回false我如何激发登录功能? – user1511029

+0

输入类型=“提交”也会触发回传。你答案的第一部分是正确的,但不是第二部分(即使我也使用服务器控件)。 – slfan

+0

@slfan:当然......早上太早......没有咖啡......;) –

2

您应该使用窗体身份验证以适当的方式,像解释here

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

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

然后我如何重定向到我想要的路径,如success.aspx – user1511029

+0

您导航到Success.aspx。如果你没有登录,你将被重定向到Login.aspx,在那里你做checkUser。身份验证Cookie将生成,以便您不必再次登录。 – slfan