TOC

This article has been localized into German by the community.

Http Kontext:

Formulare (POST-Daten)

Im letzten Artikel haben wir die Abfragezeichenfolge und das Lesen von Parametern erläutert. Dies geschieht in der Regel durch eine sogenannte GET-Anfrage, die am häufigsten dadurch erfolgt, dass der Benutzer eine URL in den Browser eingibt oder auf einen Link klickt. Alternativ zur GET-Anfrage finden wir die POST-Anfrage. Eine POST-Anfrage wird normalerweise ausgelöst, wenn der Benutzer ein FORMULAR (z. B.: Ein Kontaktformular oder ein Anmeldeformular) sendet. Im Gegensatz zu einer GET-Anforderung, bei der die Daten in der URL sichtbar sind, sind für den Benutzer in einer POST-Anforderung keine sichtbaren Daten vorhanden. Aus diesem Grund müssen Sie eine andere Eigenschaft für die HttpContext-Klasse verwenden, um POST-Daten abzurufen: Die Form -Eigenschaft.

In ASP.NET MVC besteht der häufigste Ansatz für den Umgang mit Formularen darin, das Formular an ein Modell zu binden. Dies bedeutet, dass jedes Feld des Formulars an eine Eigenschaft des Modells gebunden ist, sodass das Formular beim Absenden des Formulars sowohl aus dem Modell lesen als auch in dieses schreiben kann. Dies wird oft als Modellbindung bezeichnet und wird an anderer Stelle in diesem Lernprogramm behandelt. In diesem Artikel greifen wir jedoch auf FORMULAR-Daten auf die altmodische Weise zu.

Zugriff auf FORMULAR-Daten

Die Form-Eigenschaft funktioniert tatsächlich ähnlich wie die Query-Eigenschaft - sie fungiert als Wörterbuch mit Schlüsseln und ihren Werten. Wenn Sie also eine POST-Anforderung an den Controller senden, z.B.: Durch das Absenden eines Formulars werden alle enthaltenen Felder mit ihrem Namen als Schlüssel und ihrem Wert als Wert zum Formularwörterbuch hinzugefügt. Lassen Sie mich das an einem einfachen Beispiel veranschaulichen:

<form method="post" action="/Home/FormsTestPost">  
<label for="txtName">Your name:</label>  
<input type="text" id="txtName" name="UserName" />  

<label for="txtAge">Your age:</label>  
<input type="number" id="txtAge" name="UserAge" />  

<button type="submit">Submit</button>  
</form>

Nur ein einfaches HTML-Formular. Beachten Sie, wie ich das method -Attribut auf POST setze - Formulare unterstützen auch die GET-Methode, aber es ist fast immer besser, die POST-Methode beim Umgang mit Formularen zu verwenden.

Mein Controller könnte dann so aussehen:

public class HomeController : Controller  
{  
[HttpGet]  
public IActionResult FormsTest()  
{  
return View();  
}  

[HttpPost]  
public IActionResult FormsTestPost()  
{  
return Content("Hello, " + HttpContext.Request.Form["UserName"] + ". You are " + HttpContext.Request.Form["UserAge"] + " years old!");  
}  
}

Beachten Sie, wie ich auf die Werte der FORM-Felder zugreifen kann, indem ich auf deren Namen (UserName und UserAge, wie in der name-Eigenschaft der Formularfelder definiert) in der Form-Auflistung verweise.

Zusammenfassung

Dank der HttpContext-Klasse und der Form-Eigenschaft ist der Zugriff auf FORM/POST-Daten in ASP.NET MVC sehr einfach. Die Verwendung ist dank Model Binding normalerweise nicht erforderlich, aber in einigen Fällen immer noch nützlich.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!