Kako proslijediti parametre metodama akcije u ASP.NET Core MVC

ASP.NET Core je višeplatformski, otvoreni izvor, mršav, brz i modularan okvir za izgradnju web aplikacija visokih performansi. Postoji nekoliko načina na koje možete proslijediti parametre metodama djelovanja u ASP.NET Core MVC. Možete ih proslijediti putem URL-a, niza upita, zaglavlja zahtjeva, tijela zahtjeva ili čak obrasca. Ovaj članak govori o svim tim načinima i ilustrira ih primjerima koda.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

Stvorite ASP.NET Core MVC projekt u Visual Studio 2019

Prvo, kreirajmo ASP.NET Core projekt u Visual Studio 2019. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste stvorili novi ASP.NET Core projekt u Visual Studio.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "ASP.NET Core Web Application".
  4. Kliknite Dalje.
  5. U prozoru „Konfiguriranje novog projekta“ navedite naziv i mjesto za novi projekt.
  6. Po želji potvrdite okvir "Smjesti rješenje i projekt u isti direktorij", ovisno o vašim željama.
  7. Kliknite Stvori.
  8. U sljedećem prozoru "Stvaranje nove web-aplikacije ASP.NET Core" odaberite .NET Core kao vrijeme izvođenja i ASP.NET Core 3.1 (ili noviju) s padajućeg popisa na vrhu.
  9. Odaberite „Web aplikacija (Model-View-Controller)“ kao predložak projekta za stvaranje nove ASP.NET Core MVC aplikacije. 
  10. Obavezno označite potvrdne okvire "Omogući podršku za Docker" i "Konfiguriraj za HTTPS" jer ovdje nećemo koristiti te značajke.
  11. Provjerite je li provjera autentičnosti postavljena na "Bez provjere autentičnosti" jer ni mi nećemo koristiti provjeru autentičnosti.
  12. Kliknite Stvori.

Slijedeći ove korake trebali biste stvoriti novi ASP.NET Core MVC projekt u Visual Studio 2019. Ovaj projekt koristit ćemo u odjeljcima u nastavku kako bismo ilustrirali različite metode prosljeđivanja parametara u metode djelovanja u ASP.NET Core 3.1.

Stvorite klasu AuthorRepository u ASP.NET Core MVC

U ovom ćemo primjeru koristiti klasu spremišta - metode djelovanja u kontroleru će komunicirati s metodama klase spremišta za CRUD operacije. Prvo ćemo stvoriti klasu modela pod nazivom Autor s minimalnim svojstvima radi jednostavnosti kao što je prikazano u isječku koda koji je dat u nastavku.

    javni razred Autor

    {

        javni int Id {get; postavljen; }

        javni niz FirstName {get; postavljen; }

        javni niz LastName {get; postavljen; }

    }

Klasa AuthorRepository sadrži metode za dohvaćanje instanci klase Author s generičkog popisa, kao i za dodavanje novih instanci klase Author na generički popis. Metoda GetAuthors vraća stranicu podataka, a broj stranice joj se prosljeđuje kao argument.

    javna klasa AuthorRepository

    {

        Autori popisa = novi Popis ()

        {

            novi Autor

            {

                Id = 1,

                FirstName = "Joydip",

                Prezime = "Kanjilal"

            },

            novi Autor

            {

                Id = 2,

                FirstName = "Steve",

                Prezime = "Smith"

            }

        };

        javni autor GetAuthor (int id)

        {

            vratiti autore.FirstOrDefault (a => a.Id == id);

        }

        javni popis GetAuthors (int pageNumber = 1)

        {

            int pageSize = 10;

            int preskoči = veličina stranice * (broj stranice - 1);

            ako (autori.Count <pageSize)

                pageSize = autori.broj;

            povratak autora

              .Skoči (preskoči)

              .Take (pageSize) .ToList ();

        }

        public bool Save (autor autora)

        {

            var rezultat = autori.Gdje (a => a.Id == autor.Id);

            ako (rezultat! = null)

            {

                ako (rezultat.broj () == 0)

                {

                    autori.Dodaj (autor);

                    povratak istinit;

                }

            }

            return false;

        }

    }

Proslijedite parametre putem URL-a u ASP.NET Core MVC

Jedan od najjednostavnijih i najjednostavnijih načina prosljeđivanja parametara akcijskoj metodi je prosljeđivanje putem URL-a. Sljedeći isječak koda ilustrira kako možete proslijediti parametre u URL-u.

[HttpGet]

[Ruta ("Zadani / GetAuthor / {authorId: int}")]

javni IActionResult GetAuthor (int authorId)

{

   var podaci = authorRepository.GetAuthor (authorId);

   povratak Pogled (podaci);

}

URL krajnje točke je:

GET: // localhost: 8061 / Default / GetAuthor / 1

Prosljeđivanje parametara putem niza upita u ASP.NET Core MVC

Druga mogućnost je prosljeđivanje parametara u nizu upita. Ne zahtijeva promjenu podataka o usmjeravanju i stoga je unatrag kompatibilan. Razmotrite sljedeći isječak koda koji ilustrira kako možete prosljeđivati ​​parametre kroz nizove upita u akcijskoj metodi.

[HttpGet]

[Ruta ("Zadani / GetAuthors / {broj stranice: int}")]

javni IActionResult GetAuthors ([FromQuery

(Name = "pageNumber")] int pageNumber = 1)

{

   var podaci = authorRepository.GetAuthors (broj stranice);

   povratak Ok (podaci);

}

Evo URL-a za pristup ovoj krajnjoj točki:

GET: // localhost: 8061 / Default / GetAuthors? PageNumber = 1

Metoda GetAuthors prihvaća broj stranice kao argument koji joj se šalje putem niza upita. Imajte na umu da je pageNumber neobavezni parametar - ako se ovoj metodi ne proslijedi nijedan parametar, tada će se broj stranice protumačiti kao 1. Metoda vraća autorske zapise za navedenu stranicu. U našem primjeru, ako u spremištu podataka postoji 100 zapisa autora, a broj stranice je 3, ova metoda vraća zapise 31 do 40. (Imajte na umu da je broj autora po stranici teško kodiran; naveden je kao 10 u Klasa AuthorRepository.)

Proslijedite parametre putem zaglavlja zahtjeva u ASP.NET Core MVC

Zaglavlje zahtjeva još je jedna opcija za prosljeđivanje parametara vašim metodama djelovanja. Uobičajeni slučaj za ovo je prosljeđivanje vjerodajnica ili bilo kojih drugih tajnih podataka putem žice. Sljedeći isječak koda ilustrira metodu akcije koja prihvaća broj kreditne kartice kao parametar i vraća vrijednost true ako je broj kreditne kartice valjan.

[HttpGet]

[Ruta ("Default / IsCreditCardValid / {creditCardNumber}")]

javni IActionResult IsCreditCardValid ([FromHeader] string creditCardNumber)

{

   niz regexExpression =

   "^ (? :(? 4 [0-9] {12} (?: [0-9] {3})?) |" +

   "(? 5 [1-5] [0-9] {14}) |" +

   "(? 3 [47] [0-9] {13}) |) $";

   Regex regularni izraz = novi regularni izraz (regexExpression);

   var match = regex.Match (broj kreditne kartice);

   return Ok (match.Success);

}

Radi jednostavnosti, metoda akcije IsCreditCardValid potvrđuje samo kreditne kartice Visa, MasterCard i Amex. Možete proširiti metodu IsCreditCardValid za provjeru valjanosti ostalih vrsta kartica. Budući da bi broj kreditne kartice trebao biti proslijeđen na siguran način, ovdje je dobar izbor zaglavlje zahtjeva. Slika 1 prikazuje kako možete odrediti broj svoje kreditne kartice kao parametar putem zaglavlja zahtjeva.

Prosljeđivanje parametara putem tijela zahtjeva u ASP.NET Core MVC

Često ćete trebati prosljeđivati ​​parametre preko tijela zahtjeva kada izvodite operacije umetanja ili ažuriranja. Sljedeći isječak koda ilustrira kako možete proslijediti instancu klase Author kroz tijelo zahtjeva.

[HttpPost]

[Ruta ("Zadano / Ubaci")]

javni uložak IActionResult ([FromBody] Autor autora)

{

   return Ok (authorRepository.Save (author));

}

Slika 2 prikazuje kako možete odrediti podatke koji će se umetnuti u tijelo zahtjeva.

Kompletni izvorni kod naše klase DefaultController

Kompletni kôd klase DefaultController nalazi se u nastavku za vašu referencu.

 javna klasa DefaultController: Controller

    {

        privatno samo za čitanje AuthorRepository authorRepository =

        novi AuthorRepository ();

        [HttpGet]

        [Ruta ("Zadani / GetAuthor / {authorId: int}")]

        javni IActionResult GetAuthor (int authorId)

        {

            var podaci = authorRepository.GetAuthor (authorId);

            povratak Ok (podaci);

        }

        [HttpGet]

        [Ruta ("Zadani / GetAuthors / {broj stranice: int}")]

        javni IActionResult GetAuthors ([FromQuery

        (Name = "pageNumber")] int pageNumber = 1)

        {

            var podaci = authorRepository.GetAuthors (broj stranice);

            povratak Ok (podaci);

        }

        [HttpGet]

        [Ruta ("Default / IsCreditCardValid / {creditCardNumber}")]

        javni IActionResult IsCreditCardValid

        ([FromHeader] niz CreditCardNumber)

        {

            niz regexExpression =

            "^ (? :(? 4 [0-9] {12} (?: [0-9] {3})?) |" +

            "(? 5 [1-5] [0-9] {14}) |" +

            "(? 3 [47] [0-9] {13}) |) $";

            Regex regularni izraz = novi regularni izraz (regexExpression);

            var match = regex.Match (broj kreditne kartice);

            return Ok (match.Success);

        }

        [HttpPost]

        [Ruta ("Zadano / Ubaci")]

        javni uložak IActionResult ([FromBody] Autor autora)

        {

            return Ok (authorRepository.Save (author));

        }

    }

Napokon, parametre možete proslijediti i putem obrasca. Obrazac se često koristi kada želite prenijeti datoteku. U ovom biste slučaju trebali iskoristiti sučelje IFormFile. 

Kako učiniti više u ASP.NET Coreu:

  • Kako koristiti API analizatore u ASP.NET Coreu
  • Kako koristiti tokene podataka rute u ASP.NET Core
  • Kako koristiti API izradu verzija u ASP.NET Coreu
  • Kako koristiti objekte za prijenos podataka u ASP.NET Core 3.1
  • Kako postupati s pogreškama 404 u ASP.NET Core MVC
  • Kako se koristi injekcija ovisnosti u akcijskim filtrima u ASP.NET Core 3.1
  • Kako se koristi obrazac opcija u ASP.NET Core
  • Kako se koristi usmjeravanje krajnje točke u ASP.NET Core 3.0 MVC
  • Kako izvesti podatke u Excel u ASP.NET Core 3.0
  • Kako koristiti LoggerMessage u ASP.NET Core 3.0
  • Kako poslati e-poštu u ASP.NET Core
  • Kako prijaviti podatke na SQL Server u ASP.NET Core
  • Kako rasporediti poslove pomoću Quartz.NET-a u ASP.NET Core
  • Kako vratiti podatke s ASP.NET Core Web API-ja
  • Kako oblikovati podatke o odgovoru u ASP.NET Core
  • Kako konzumirati ASP.NET Core Web API pomoću RestSharp
  • Kako izvesti asinkrne operacije pomoću Dappera
  • Kako koristiti zastavice značajki u ASP.NET Coreu
  • Kako koristiti atribut FromServices u ASP.NET Core
  • Kako raditi s kolačićima u ASP.NET Coreu
  • Kako raditi sa statičkim datotekama u ASP.NET Coreu
  • Kako koristiti URL za prepisivanje Middlewarea u ASP.NET Core
  • Kako implementirati ograničenje brzine u ASP.NET Core
  • Kako koristiti Azure Application Insights u ASP.NET Core
  • Korištenje naprednih značajki NLog u ASP.NET Core
  • Kako postupati s pogreškama u ASP.NET web API-ju
  • Kako implementirati globalno rukovanje iznimkama u ASP.NET Core MVC
  • Kako postupati s null vrijednostima u ASP.NET Core MVC
  • Napredna verzija u ASP.NET Core Web API
  • Kako raditi s uslugama za radnike u ASP.NET Coreu
  • Kako koristiti API zaštite podataka u ASP.NET Core
  • Kako se koristi uvjetni međuprodukt u ASP.NET Coreu
  • Kako raditi sa stanjem sesije u ASP.NET Coreu
  • Kako napisati učinkovite kontrolere u ASP.NET Core