ASP.net – Jak wysłać formularz metodą typu POST do kontrolera – newsletter

Loading Likes...

Najważniejszą rzeczą, którą musimy zrobić, aby nasze żądanie typu POST zostało prawidłowo odebrane przez kontroler to dopisanie do akcji odpowiedni selektor. Selektorem odpowiedzialnym za tą metodę jest

Pokażę teraz jak to wygląda w praktyce na podstawie prostego Newslettera

W nowym projekcie ASP.net MVC  tworzymy klasę Newsletter w folderze Models.

Gdy już mamy klasę możemy utworzyć dla niej formularz, który przekażemy potem do kontrolera. Wykorzystamy w tym celu HTML Helperów oraz składni Razor.

Gdy już mamy klasę i formularz możemy przejść do zabrania się za kontroler. Tak jak wcześniej wspomniałem musimy dodać selektor do akcji. Przyjrzyj się uważnie gdyż została dodana nowa klasa HomeViewModel, o której zaraz troche dopowiem.

Wewnątrz głównej klasy HomeController, stworzyliśmy Listę obiektów Newsletter, żeby móc operować na niej wewnątrz innych akcji. Stworzyliśmy także akcję Add z selektorem POST, która przyjmuje nowy model, HomeViewModel. Powinno teraz nasunąć Ci się na myśl dlaczego nie mogliśmy wpisać do akcji Add(Newsletter) otóż HomeViewModel jest naszym modelem walidującym i na jego podstawie sprawdzamy czy dane z naszego formularza są prawidłowe. Gdybyśmy chcieli użyć Add(Newsletter) wyskoczyłby nam błąd.  Tak wygląda nasza klasa HomeViewModel, która została stworzona w osobnym folderze ViewModels, wewnątrz głównego projektu.

Zatem gdy mamy już wszystko wystarczy nam dodać widok List oraz akcję List, która go obsłuży. Zacznijmy od dopisania akcji.

Teraz pozostało nam jedynie stworzenie widoku dla naszej akcji List()

Nasz przykładowy newsletter jest gotowy, w praktyce oczywiście powinien być lepiej walidowany, oraz po dodaniu subskrybenta, powinniśmy pokazać mu komunikat, a nie pokazywać pełną listę. 🙂 Wersja jest taka ze względu na to, że chciałem Wam pokazać jak najwięcej.

You May Also Like

About the Author: Jerzy Kołakowski

Pasjonat informatyki, bloger. Full-stack Developer Technologie:
  • ASP.NET MVC
  • ASP.NET CORE
  • Angular 2+

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Facebook
Inline
Inline