Programiranje

Kako prenesti parametre v metode dejanja v ASP.NET Core MVC

ASP.NET Core je medplatformni, odprtokodni, vitki, hitri in modularni okvir za izdelavo visoko zmogljivih spletnih aplikacij. V ASP.NET Core MVC lahko na več načinov posredujete parametre načinom dejanja. Lahko jih posredujete prek URL-ja, niza poizvedbe, glave zahteve, telesa zahteve ali celo obrazca. Ta članek govori o vseh teh načinih in jih ponazarja s primeri kode.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projekt ASP.NET Core MVC v Visual Studio 2019

Najprej ustvarimo projekt ASP.NET Core v Visual Studio 2019. Če predpostavimo, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov projekt ASP.NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na prikazanih seznamih predlog izberite »Spletna aplikacija ASP.NET Core«.
  4. Kliknite Naprej.
  5. V oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Izbirno potrdite polje »Rešitev in projekt postavite v isti imenik«, odvisno od vaših želja.
  7. Kliknite Ustvari.
  8. V naslednjem oknu »Ustvari novo spletno aplikacijo ASP.NET Core« izberite .NET Core kot izvajalno okolje in ASP.NET Core 3.1 (ali novejšo) s spustnega seznama na vrhu.
  9. Kot predlogo projekta izberite »Spletna aplikacija (Model-View-Controller)«, da ustvarite novo aplikacijo ASP.NET Core MVC.
  10. Prepričajte se, da sta potrditveni polji »Omogoči podporo za Docker« in »Konfiguriranje za HTTPS« odstranjeni, saj tukaj ne bomo uporabljali teh funkcij.
  11. Prepričajte se, da je preverjanje pristnosti nastavljeno na »Brez preverjanja pristnosti«, saj tudi preverjanja pristnosti ne bomo uporabljali.
  12. Kliknite Ustvari.

Po teh korakih morate ustvariti nov projekt ASP.NET Core MVC v Visual Studio 2019. Ta projekt bomo uporabili v spodnjih odsekih za ponazoritev različnih načinov posredovanja parametrov v akcijske metode v ASP.NET Core 3.1.

Ustvarite razred AuthorRepository v ASP.NET Core MVC

V tem primeru bomo uporabili razred repozitorija - metode dejanja v krmilniku bodo vplivale na metode razreda repozitorija za operacije CRUD. Najprej bomo ustvarili razred modela z imenom Author z minimalnimi lastnostmi zaradi enostavnosti, kot je prikazano v spodnjem delčku kode.

  javni razred Avtor

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

    }

Razred AuthorRepository vsebuje metode za pridobivanje primerkov razreda Author s splošnega seznama in za dodajanje novih primerkov razreda Author na splošni seznam. Metoda GetAuthors vrne stran s podatki, številka strani pa se ji posreduje kot argument.

  javni razred AuthorRepository

    {

Avtorji seznama = nov seznam ()

        {

novi avtor

            {

Id = 1,

FirstName = "Joydip",

LastName = "Kanjilal"

            },

novi avtor

            {

Id = 2,

FirstName = "Steve",

LastName = "Smith"

            }

        };

javni avtor GetAuthor (int id)

        {

vrni avtorje.FirstOrDefault (a => a.Id == id);

        }

javni seznam GetAuthors (int pageNumber = 1)

        {

int pageSize = 10;

int preskoči = pageSize * (pageNumber - 1);

če (avtorji.število <stranSize)

pageSize = author.Count;

vrnitev avtorjev

.Skip (preskoči)

.Take (pageSize) .ToList ();

        }

public bool Save (avtor avtor)

        {

var rezultat = avtorji.Kje (a => a.Id == avtor.Id);

če (rezultat! = nič)

            {

if (result.Count () == 0)

                {

avtorji.Dodaj (avtor);

vrni res;

                }

            }

vrni false;

        }

    }

Prenesite parametre prek URL-ja v ASP.NET Core MVC

Eden najpreprostejših in najpreprostejših načinov posredovanja parametrov akcijski metodi je posredovanje prek URL-ja. Naslednji delček kode prikazuje, kako lahko v URL prenesete parametre.

[HttpGet]

[Pot ("Privzeto / GetAuthor / {authorId: int}")]

javni IActionResult GetAuthor (int authorId)

{

var podatki = authorRepository.GetAuthor (authorId);

vrnitev Pogled (podatki);

}

URL končne točke je:

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

Prenos parametrov prek poizvedbenega niza v ASP.NET Core MVC

Druga možnost je posredovanje parametrov v nizu poizvedbe. Ne zahteva spreminjanja informacij o usmerjanju in je zato združljiv nazaj. Upoštevajte naslednji delček kode, ki ponazarja, kako lahko parametre posredujete prek poizvedbenih nizov v akcijski metodi.

[HttpGet]

[Route ("Default / GetAuthors / {pageNumber: int}")]

javni IActionResult GetAuthors ([FromQuery

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

{

var data = authorRepository.GetAuthors (pageNumber);

vrni Ok (podatki);

}

Tu je URL za dostop do te končne točke:

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

Metoda GetAuthors sprejme številko strani kot argument, ki ji je poslan prek niza poizvedbe. Upoštevajte, da je pageNumber neobvezen parameter - če tej metodi ni poslan noben parameter, bi se številka strani razlagala kot 1. Metoda vrne avtorske zapise za določeno stran. V našem primeru, če je v shrambi podatkov 100 avtorskih zapisov in je številka strani 3, ta metoda vrne zapise od 31 do 40. (Upoštevajte, da je število avtorjev na stran težko kodirano; v polju je določeno kot 10 Razred AuthorRepository.)

Parametre posredujte prek glave zahteve v ASP.NET Core MVC

Glava zahteve je še ena možnost za posredovanje parametrov vašim dejanjem. Običajni primer tega je posredovanje poverilnic ali drugih tajnih podatkov po žici. Naslednji delček kode prikazuje način dejanja, ki kot parameter sprejme številko kreditne kartice in vrne true, če je številka kreditne kartice veljavna.

[HttpGet]

[Pot ("Privzeto / IsCreditCardValid / {CreditCardNumber}")]

public 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 = nov regularni izraz (regexExpression);

var match = regex.Match (creditCardNumber);

vrni se Ok (match.Success);

}

Zaradi enostavnosti akcijska metoda IsCreditCardValid potrjuje samo kreditne kartice Visa, MasterCard in Amex. Metodo IsCreditCardValid lahko razširite tako, da preveri druge vrste kartic. Ker je treba številko kreditne kartice varno posredovati, je uporaba glave zahtev tukaj dobra izbira. Slika 1 prikazuje, kako lahko v glavi zahteve kot parameter določite številko kreditne kartice.

Prenos parametrov prek telesa zahteve v ASP.NET Core MVC

Med izvajanjem operacij vstavljanja ali posodabljanja boste pogosto morali prenesti parametre prek telesa zahteve. Naslednji delček kode ponazarja, kako lahko primerek razreda Author posredujete prek telesa zahteve.

[HttpPost]

[Pot ("Privzeto / Vstavi")]

public IActionResult Insert ([FromBody] Avtor avtor)

{

vrni Ok (authorRepository.Save (author));

}

Slika 2 prikazuje, kako lahko določite podatke, ki jih želite vstaviti v telo zahteve.

Popolna izvorna koda našega razreda DefaultController

Popolna koda razreda DefaultController je navedena spodaj za referenco.

 javni razred DefaultController: krmilnik

    {

zasebno samo za branje AuthorRepository

novo AuthorRepository ();

[HttpGet]

[Pot ("Privzeto / GetAuthor / {authorId: int}")]

javni IActionResult GetAuthor (int authorId)

        {

var podatki = authorRepository.GetAuthor (authorId);

vrni Ok (podatki);

        }

[HttpGet]

[Route ("Default / GetAuthors / {pageNumber: int}")]

javni IActionResult GetAuthors ([FromQuery

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

        {

var data = authorRepository.GetAuthors (pageNumber);

vrni Ok (podatki);

        }

[HttpGet]

[Pot ("Privzeto / 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 = nov regularni izraz (regexExpression);

var match = regex.Match (creditCardNumber);

vrni se Ok (match.Success);

        }

[HttpPost]

[Pot ("Privzeto / Vstavi")]

public IActionResult Insert ([FromBody] Avtor avtor)

        {

vrni se Ok (authorRepository.Save (avtor));

        }

    }

Končno lahko parametre posredujete tudi prek obrazca. Obrazec se pogosto uporablja, ko želite naložiti datoteko. V tem primeru bi morali izkoristiti vmesnik IFormFile.

Kako narediti več v ASP.NET Core:

  • Kako uporabljati analizatorje API v ASP.NET Core
  • Kako uporabljati žetone podatkov poti v ASP.NET Core
  • Kako uporabljati različice API v ASP.NET Core
  • Kako uporabljati predmete za prenos podatkov v ASP.NET Core 3.1
  • Kako obravnavati napake 404 v ASP.NET Core MVC
  • Kako uporabiti vbrizgavanje odvisnosti v akcijskih filtrih v ASP.NET Core 3.1
  • Kako uporabiti vzorec možnosti v ASP.NET Core
  • Kako uporabljati usmerjanje končnih točk v ASP.NET Core 3.0 MVC
  • Kako izvoziti podatke v Excel v ASP.NET Core 3.0
  • Kako uporabljati LoggerMessage v ASP.NET Core 3.0
  • Kako poslati e-pošto v ASP.NET Core
  • Kako zapisati podatke v SQL Server v ASP.NET Core
  • Kako razporediti delovna mesta z uporabo Quartz.NET v ASP.NET Core
  • Kako vrniti podatke iz spletnega API-ja ASP.NET Core
  • Kako oblikovati podatke o odzivih v ASP.NET Core
  • Kako porabiti spletni API ASP.NET Core s pomočjo RestSharp
  • Kako izvajati asinhrne operacije z uporabo Dapperja
  • Kako uporabljati zastavice funkcij v ASP.NET Core
  • Kako uporabljati atribut FromServices v ASP.NET Core
  • Kako delati s piškotki v ASP.NET Core
  • Kako delati s statičnimi datotekami v ASP.NET Core
  • Kako uporabiti prepisovanje URL-jev Middleware v ASP.NET Core
  • Kako implementirati omejevanje hitrosti v ASP.NET Core
  • Kako uporabljati Azure Application Insights v ASP.NET Core
  • Uporaba naprednih funkcij NLog v ASP.NET Core
  • Kako ravnati z napakami v spletnem API-ju ASP.NET
  • Kako implementirati globalno obravnavo izjem v ASP.NET Core MVC
  • Kako ravnati z ničelnimi vrednostmi v ASP.NET Core MVC
  • Napredno spreminjanje različic v ASP.NET Core Web API
  • Kako delati s storitvami za delavce v ASP.NET Core
  • Kako uporabljati API za zaščito podatkov v ASP.NET Core
  • Kako uporabljati pogojno vmesno programsko opremo v ASP.NET Core
  • Kako delati s stanjem seje v ASP.NET Core
  • Kako napisati učinkovite krmilnike v ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found