Odbieranie danych z formularza HTML

0

Mam formularz na jednej z podstron prostej witryny napisanej w HTML'u. Formularz również napisałem w HTML'u. I teraz chcę dane z niego przesłać do strony napisanej w ASP.NET, czyli Default.aspx. Jak najlepiej to zrobić?

W HTML piszę coś takiego:
form action="http://jakis_tam_serwer_gdzie_jest_strona/Default.aspx" method="post" enctype="text/plain"><div>

A jak to wygląda w treści strony Default.aspx? W sumie to nie chce tych danych wyświetlać, jedynie wyświetlić informację o tym, że udało się odebrać dane.

0

obiekt Request zawiera dane z formularza dostępne przez:

  • indexer na właściwości QueryString, jeśli przesyłasz metodą GET
  • indexer na właściwości Form, jeśli przesyłasz metodą POST
  • indexer na obiekcie Request, wybiera wartości bez względu na metodę, czyli pobiera zarówno z QueryString jak i Form
var wartoscPole1 = Request.Form["pole1"]; // pole1 musiało być przesłane metodą POST
var wartoscPole2 = Request.QueryString["pole2"]; // pole2 musiało być przesłane metodą GET
var wartoscPole1a = Request["pole1"]; // nieważna metoda przesłania
var wartoscPole2a = Request["pole2"]; // nieważna metoda przesłania

No więc musisz sobie sprawdzić co ci przyszło i podjąć decyzje czy to ci pasuje czy nie i wyświetlić odpowiedni komunikat.

0

Hmm.. ja nie chcę na razie sprawdzać co zostało nadesłane. Jedyne czego potrzebuje to informacji o tym, że cokolwiek zostało w ogóle odebrane. Czyli rozumiem, że mam if'a zrobić... tylko co będzie w warunku?

0

jeśli interesuje cię czy cokolwiek przyszło metodą post to:

if (Request.Form.Count > 0) {/*OK*/}
0

Coś robię źle, ale nie wiem co, bo brak efektu.

Mój Default.aspx.cs:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form.Count > 0)
        {
            System.Console.WriteLine("Odebrano dane!");
        }
        else
        {
            System.Console.WriteLine("Brak danych!");
        }
    }
}

Default.aspx jest nieruszany, czyli:

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

W HTMLU mam:
<form action="http://adres_serwera/Default.aspx" method="post" enctype="text/plain">

Jednak gdy dam na formularzu "Wyślij" to przekierowuje mnie do pustej strony. Nic nie wyświetla.

0

eeee, bo jak chcesz na stronie web wyświetlić coś za pomocą System.Console???
Response.Write możesz użyć, albo lepiej umieść na stronie np. Label i wpisz tekst do label'a (label1.Text = "OK";)

0

Buhahahahaha. :D A jakby tak w Silverlight napisać emulator konsoli? :D

0

Hmm.. problem w tym, że Request.Form.Count zwraca mi zawsze wartość równą 0.

0

pokaż całą zawartość taga form albo sprawdź pod firebugiem/fiddlerem/innym snifferem co idzie do serwera.

0
 <form action="http://serwer_z_witryna/Default.aspx" method="post" enctype="text/plain"><div>
    <fieldset><legend>Dane</legend><br>
		<table>
		<tr>
			<td>Imię:</td><td><input type="text" name="imie" /></td>
		</tr>
		<tr>
			<td>Nazwisko:</td><td><input type="text" name="nazwisko" /></td>
		</tr>
		<tr>
			<td>Telefon: </td><td><input type="text" name="telefon" value="123-456-789" maxlength="11" /></td>
		</tr>
		<tr>
			<td>Hasło: </td><td><input type="password" name="haslo" /></td>
		</tr>
		</table>
		<br />
		<textarea name="tresc" rows="5" cols="50">Napisz kilka słów o sobie...</textarea><br />
		<br />

		Wybierz przedział wiekowy:<br/>
		<input type="radio" name="odpowiedz" value="wiek_mniej_15"><18<br>
		<input type="radio" name="odpowiedz" value="wiek_18_30">18-30<br>
		<input type="radio" name="odpowiedz" value="wiek_wiecej_30">>30
		
		<p>
		Twoja płeć:<br/>
		<select name="plec" size="1">
		<option>Kobieta</option>
		<option>Mężczyzna</option>
		</select></p>
	</fieldset>
	<br />

	<fieldset><legend>Pozostałe</legend><br>
	Proszę wybrać znajomość języków obcych:<br />
	<select name="jezyk" size="3" multiple>
	<option selected>Angielski</option>
	<option selected>Rosyjski</option>
	<option>Niemiecki</option>
	<option>Francuski</option>
	<option>Hiszpański</option>
	<option>Włoski</option>
	<option>Chiński</option>
	<option>Japoński</option>
	<option>Kuroński</option>
	<option>Węgierski</option>
	<option>Łaciński</option>
	<option>Czeski</option>
	<option>Inny</option>
	</select>
	
	<p>
	Proszę wybrać zainteresowania:<br/>
	<input type="checkbox" name="zainteresowania" value="sport" checked>Sport<br>
	<input type="checkbox" name="zainteresowania" value="ksiazki">Książki<br>
	<input type="checkbox" name="zainteresowania" value="komputery" checked>Komputery<br>
	<input type="checkbox" name="zainteresowania" value="komputery">Śpiew<br>
	<input type="checkbox" name="zainteresowania" value="komputery">Taniec<br>
	<input type="checkbox" name="zainteresowania" value="komputery">Aktorstwo
	</p>
	
	</fieldset>
	<br />
	<center>
	<input type="submit" name="wyslij" value="Wyślij"> &nbsp; <input type="reset" value="Wyczyść"></center>
	
	
	</div>
	</form>
0

Śmiesznie proste na co wskazują powyższe odpowiedzi, a jednak nikt nie powie w czym błąd?

0

wywal enctype, ma nieprawidłową wartość (nie wysyłasz plików, więc powinien mieć wartość domyślną - "application/x-www-form-urlencoded"). jak w ogóle wymyśliłeś wartość text/plain?

ten kod html pochodzi chyba z zeszłego tysiąclecia:

  • podomykaj tagi,
  • nie ma czegoś takiego jak checked, jest checked="checked",
  • nie ma czegoś takiego jak selected, jest selected="selected",
  • nie używaj tabel do layoutu,
  • sformatuj jakoś ten kod, bo źle mu z oczu patrzy,
  • nie używaj znacznika center,
  • nie używaj też br do layoutu, od kilkunastu lat mamy css, klasy i identyfikatory.
0

Dzięki za te cenne dla mnie wskazówki. Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1