2010-03-16 5 views
0

У меня есть дочерняя страница LoginContent.aspx, которая содержит форму входа. Если пользователь входит в систему, он должен быть перенаправлен на мою страницу Welcome.aspx. Но если я нажму кнопку входа, страница просто перезагрузится, ничего не произойдет. Код на этой странице пуст. И LoginContent.aspx, и Welcome.aspx являются дочерними формами одной и той же главной страницы.html-login form не работает

<form method="post" action="~/Welcome.aspx"> 
    Username: <input type="text" name="username" size="15" /><br /> 
    Password: <input type="password" name="passwort" size="15" /><br /> 
<input type="submit" value="Login"/></p> 
</form> 

Я знаю, что могу использовать элемент управления доступом asp.net, но я хочу больше контролировать вещи.

ответ

1

У вас нет вложенной формы внутри страницы aspx.

ОБНОВЛЕНО:

Поскольку ASP.NET веб-форма не позволяет нам иметь несколько форм на одной странице ASPX, таким образом, чтобы сделать это работает, сделайте следующее:

  1. Remove форма тега
  2. добавить Runat сервер
  3. вход выполнить перенаправление на стороне сервера

.

Username: <input type="text" name="username" size="15" runat=server /><br/> 
Password: <input type="password" name="passwort" size="15" runat=server /><br/> 
<input type="submit" value="Login" runat=server onclick="submit_onclick" /></p> 

А в коде позади:

protected void submit_onclick(object sender, Event e) 
{ 
    // do some auth stuff here 
    Response.Redirect("~/welcome.aspx"); 
} 

Надеется, что это будет ответить на ваш вопрос .. :)

+0

Почему бы и нет? Страница входа правильно отображается на клиенте, поэтому почему это не должно работать? AFAIK ASP.NET MVC, который также использует aspx-страницы, основывается на html вместо UserControls, как они решат это? И что я должен использовать вместо этого? – codymanix

+0

Является ли пример кода выше asp.net mvc? Если да, то мое утверждение неверно. Только веб-форма asp.net не позволяет вам иметь несколько форм внутри страницы aspx. – heisthedon

+0

, если код выше - asp.net mvc, можете ли вы попробовать это: удалить «~» из URL-адреса действия? – heisthedon

0

Если <form> тега из вашего LoginContent.aspx вложенного внутри <form runat="server"> Я хотел бы попробовать перемещая его так, чтобы он находился за пределами серверной формы и видел, работает ли он оттуда.

Возможно, стоит также отслеживать HTTP-запросы на панели NetBox Firebug, так что вы можете увидеть, действительно ли он делает запрос HTTP POST в /Welcome.aspx - это может помочь вам точно определить, где проблема является.

+0

Я удалил теги внутренней формы, чтобы остались только внешние (они находятся на главной странице), но это не помогло. Спасибо за идею с Firebug. Firebug говорит, что клик по отправке результатов в сообщение на Loginpage.aspx, что до сих пор является правильным, только то, что событие не вызвано. – codymanix

+0

Событие не срабатывает, если вы не используете элементы управления с помощью * runat = "server" * - вы все равно сможете получать представленные значения с помощью Request.Form ["username"] и Request.Form ["password"] хотя :-) –

+0

Я поместил runat = "server" в свой тег ввода, но я тоже не работаю. – codymanix