Почему моя кнопка "Отправить" дважды?

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);
}
Другие вопросы по тегам