IsPostBack всегда возвращает false - PullRequest
4 голосов
/ 27 мая 2009

Каждый раз, когда я проверяю IsPostBack в PageLoad (), возвращается false независимо от того, присутствуют ли данные поста. Моей первой реакцией было проверить, отсутствует ли тег runat = "server" в форме или кнопке отправки. Однако все они были добавлены, и страница WriteEmail.aspx по-прежнему всегда возвращает false для IsPostBack. Я также пытался использовать IsCrossPagePostBack вместо IsPostBack.

ListInstructors.aspx:

<form runat="server" method="post" action="WriteEmail.aspx">
      ...
      <input type="submit" id="writeEmail" value="Write Email" runat="server" />
</form>

WriteEmail.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Response.Redirect("ListInstructors.aspx");
    }
}

Ответы [ 2 ]

13 голосов
/ 27 мая 2009

Опубликовать! = Обратная передача. Обратная передача - это когда вы отправляете обратно на такую ​​же страницу. Действие в вашей форме - отправка на новую страницу.

Похоже, все, что вы делаете, - это используете страницу WriteEmail.aspx для отправки сообщения, а затем возвращаетесь туда, где вы только что были. Вы даже не отображаете форму для сбора текста там. Это очень ... классический ASP-образ ... способ справиться с ситуацией.

Вместо этого поместите код, который вы используете для отправки сообщения, в отдельный класс класса и, если необходимо, поместите класс в папку App_Code. Также измените кнопку отправки на <asp:button ... /> Тогда вы можете просто назвать ее кодом из события Click сервера для вашей кнопки и никогда не покидать страницу ListInstructors.aspx.


В ответ на ваш комментарий: Нет. От MSDN :

... сделать межстраничный запрос, назначив URL-адрес страницы свойству PostBackUrl элемента управления Button, который реализует интерфейс IButtonControl.

2 голосов
/ 27 мая 2009

IsPostBack неверно, потому что форма не отправляется со страницы WriteEmail.aspx; отправка формы с той же страницы - вот что вызывает PostBack. Если вы отправили форму со страницы WriteEmail.aspx, это будет PostBack; на самом деле это просто сообщение.

Возможно, эта ссылка на MSDN окажется полезной:

http://msdn.microsoft.com/en-us/library/ms178141.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...