Почему моя кнопка "Отправить" дважды?
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
}
}
Я занимаюсь разработкой веб-страницы для старой мобильной версии (например, Nokia N70), столкнувшейся с проблемой. Когда я отправляю свое имя пользователя и пароль, тогда проверяю, что пользователь возвращает true, чтобы перенаправить на новую страницу. Но он не будет перенаправлять на success.aspx
, Так что я отлаживаю точку на Response.Redirect
код, это может остановиться на этом, и я продолжаю работать, становится ошибкой, потому что получение имени пользователя и пароля пусто. Затем я понял, что он загрузил страницу дважды. Как это решить?
2 ответа
Вы хотите войти, когда есть PostBack. А не наоборот.
+ Изменить
if (!Page.IsPostBack)
в
if (Page.IsPostBack)
Убедитесь, что вы установили AutoEventWireup
истинно в Code Front:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"...
в противном случае Page_Load никогда не запускается.
Вы должны правильно использовать проверку подлинности с помощью форм, как описано здесь
Вы должны сделать что-то подобное для своего перенаправления:
if (checkUser(userName.Text, password.Text))
{
FormsAuthentication.RedirectFromLoginPage(userName.Text, false);
}