[英]Form self-submission
所以我试图让一个页面提交给自己,然后在出错时或者在成功的其他地方重定向回自身。
我有在VB.NET中工作的示例代码,但我正在尝试使用相同的代码在C#中工作。 我觉得错误是在使用Page_Load - 我觉得我应该使用另一个电话。
由于代码现在,我得到一个无限重定向循环,这是不可接受的。
这是代码:
<% @Page Language="C#" Debug="true" %>
<% @Import Namespace="System.Web" %>
<script language="C#" runat="server">
void Page_Load(object sender,EventArgs e) {
if( Request.Form["username"] == "admin" && Request.Form["password"] == "password") {
HttpContext.Current.Session["username"] = Request.Form["username"];
HttpContext.Current.Session["password"] = Request.Form["password"];
Response.Redirect("elsewhere.html");
}
else {
Response.Redirect("login.aspx?errors=1");
}
}
</script>
<!-- #include file="header.html" -->
<form action="" method="post">
<div id="errors">Incorrect Username or Password</div>
<div><span>Username:</span><input name="username" /></div>
<div><span>Password:</span><input name="password" type="password" /></div>
<div><input type="button" value="Login" id="loginbutton" /></div>
</form>
<!-- #include file="footer.html" -->
谢谢!
我想你错过了
if (IsPostBack) {
//Your code here
}
这将允许您的代码仅在表单刚刚提交时触发。
无限重定向的原因是
Response.Redirect("login.aspx?errors=1");
当第一次加载页面时,Request.Form [“username”] ==“admin”,这些条件中的任何一个都会导致else部分执行。 它无限地一次又一次地加载login.aspx。
当页面回发时我们将这些语句执行。 你的代码就是。
if(Page.IsPostBack)
{
if( Request.Form["username"] == "admin" && Request.Form["password"] == "password") {
HttpContext.Current.Session["username"] = Request.Form["username"];
HttpContext.Current.Session["password"] = Request.Form["password"];
Response.Redirect("elsewhere.html");
}
else {
Response.Redirect("login.aspx?errors=1");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.