Действие PostBackUrl Программно с использованием C # - PullRequest
3 голосов
/ 30 июня 2011

Можете ли вы получить действие PostBackUrl в коде страницы?

Я хочу вызвать функцию onclick, которая выполняет некоторые обновления базы данных, а затем отправляет обратно на другой URL со значениями в виде скрытых полей.

Ответы [ 4 ]

3 голосов
/ 30 июня 2011

Я бы использовал сервер. Передача Однако скрытые поля крайне небезопасны.Так что на своем месте (и так как вы уже используете server.transfer), почему бы не использовать Context.Items?Вы можете передавать целые объекты через него.Например: это на исходной странице -

Context.Items.Add("Contact", contactID)
        Server.Transfer("~/ViewContact.aspx")

На полученной странице вы делаете -

Dim contactID = Context.Items.Item("Contact").ToString()

При использовании server.transfer необходимо соблюдать осторожность при передачена сервере и никогда не уведомляет браузер, что страница отличается от той, которую он запрашивал.Это может привести к неприятностям, когда вы будете пытаться делать постбэки, если вы этого не ожидаете.

На самом деле я только что написал блог об этой самой вещи ...

Сервер.Пример передачи

2 голосов
/ 30 июня 2011

Вы создаете простую белую страницу со всеми вашими данными, которые вы хотите отправить обратно, внутри формы, и с помощью javascript вы создаете обратную запись.

Проблема в том, что у пользователя не было включения javascript,в этом случае на этой простой белой странице вы видите сообщение, в котором говорится, что эта страница автоматически перенаправляется на другую страницу через несколько секунд, или нажмите здесь, чтобы перенаправить прямо сейчас.

Эта простая белая страница,это просто перезапись нормальной страницы после клика.

Вы также можете прочитать этот пост, который похож на трюк с отправкой данных формы на другой URL с исходным кодом и примером.

и существует также много других способов передачи значений между веб-страницами asp.net .

Обычно это происходит, когда у вас есть поставщик платежного шлюза, и вы выиграли от своегостраницу для передачи на этот шлюз - PayPal, например.Еще одно решение также состоит в том, чтобы иметь страницу со сводкой того, что вы хотите отправить на следующую страницу, и на этой странице у вас есть все ваши данные, а также сводка и обычная запись обратно на шлюз.

Мне нужно запустить функцию (в коде сзади) при нажатии кнопки.Как только эта функция будет завершена, я хочу, чтобы код, стоящий позади, отправлял сообщение на другую страницу со значениями скрытого поля

Когда ваша функция завершится, вы не сможете перейти с сообщением обратно на другую страницу.Что вы можете сделать - это отобразить на своей странице простую форму с вашими данными в качестве скрытого ввода, которую нужно отправить на другую страницу, и автоматически отправить эту новую форму, которую вы создали.

Пример

protected void Button1_Click(object sender, EventArgs e)
{
   // ...you calculations here...

    StringBuilder sbRenderOnMe = new StringBuilder();

    // the form and the data
    sbRenderOnMe.AppendFormat(
    "<html><body><form action=\"http://www.google.com\" method=\"post\" name=\"form1\">"
         + "<input value=\"{0}\" id=\"lst-Send1\" name=\"Send1\" type=\"hidden\" />"
         + "<input type=\"submit\" name=\"Button1\" value=\"press me if not automatically redirect\" id=\"Button1\" />"
     + "</form>"
     , 1100
    );

    // the auto submit
    sbRenderOnMe.AppendFormat("<script>document.form1.submit();</script>");       
    sbRenderOnMe.AppendFormat("</body></html>");

    Response.Write(sbRenderOnMe.ToString());
    Response.End();
}

Единственный минус, который имеет небольшое мерцание и не работает автоматически без JavaScript, нужно и сказать пользователю нажать кнопку.

0 голосов
/ 05 июля 2011

Я сталкивался с этим решением

<asp:LinkButton ID="CartOrderButton" runat="server" PostBackUrl="order.aspx" onclick="CartOrderButton_Click">Order Me</asp:LinkButton>
0 голосов
/ 30 июня 2011

После того как вы закончили с исходным событием code-behind, вы можете использовать Server.Transfer и сохранить переменные формы и строки запроса.

Server.Transfer("OtherPage.aspx", true);
...