Odpowiedź.Przekierowanie, które zamieszcza dane na inny adres URL w ASP.NET

Chcę przekierować odpowiedź na inny adres URL, gdy zawiera on DANE postu w nagłówku HTTP.

// Inside an ASP.NET page code behind:
Response.Redirect("http://www.example.com/?data=sent%20via%20GET");
// This will sent data to http://www.example.com via GET.
// I want to POST this data to http://www.example.com instead.

Jak to zrobić w ASP.NET?

Author: Xaqron, 2011-05-19

4 answers

Możesz wysyłać ogromne DANE również za pomocą tej sztuczki..

Response.Clear();

StringBuilder sb = new StringBuilder();
sb.Append("<html>");
sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
sb.AppendFormat("<form name='form' action='{0}' method='post'>",postbackUrl);
sb.AppendFormat("<input type='hidden' name='id' value='{0}'>", id);
// Other params go here
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");

Response.Write(sb.ToString());

Response.End();
 51
Author: Govind KamalaPrakash Malviya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-19 17:06:09

Nie możesz pisać za pomocą przekierowania. Z definicji przekierowanie oznacza serwer wysyłający kod statusu HTTP przekierowania 302 do klienta z nową lokalizacją, tak że klient wysyła żądanie GET do tej nowej lokalizacji. Tak działa protokół HTTP i nie ma mu ch można z tym zrobić.

Więc jednym ze sposobów, aby to osiągnąć, byłoby przekierowanie do jakiejś tymczasowej strony, która będzie zawierać HTML <form> z method="POST" i zawierające wartości, które chcesz wysłać jako ukryte pola. Wtedy ty można użyć javascript, aby automatycznie przesłać ten formularz.

 12
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-19 16:59:06

Choć jest to dość stary wątek, pomyślałem, że podzielę się tym, jak to robię.

Załóżmy, że strona wysyłająca to a. aspx, a strona docelowa to b. aspx.

  1. zbieraj dane użytkownika w.aspx. Użytkownik kliknie przycisk submit, co powoduje postback.
  2. wewnątrz zdarzenia Button_click pliku. aspx, przetwarza dane woluminu (na przykład zapisuje przesłane pliki binarne). Określ łącze danych woluminu i dołącz je do końca żądania.nazwa formularza-łańcuch wartości.
  3. Zaszyfruj końcowy łańcuch nazw-wartości i Ustaw na ciasteczko.
  4. Redirect to B. aspx
  5. W b.aspx, Pobierz ten plik cookie, odszyfruj i otrzymasz wszystkie pary nazwa-wartość. Teraz przetwarzaj je jak zwykle.

Zalety: (a) B.aspx jest wyświetlany na pasku adresu przeglądarki. Wpisuje się do historii przeglądarki. Serwer.przenieś to. b) daje efekt postu. Użytkownicy nie mogą zobaczyć pary nazwa-wartość w querystring.

 0
Author: Kish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-21 14:20:15

Możesz użyć viewstate ,aby "przenieść" dane i odczytać je na nowej stronie lub nawet na tej samej stronie.

 0
Author: Idan Shechter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-14 02:33:26