Programavimas

Kaip perduoti parametrus veiksmų metodams ASP.NET Core MVC

ASP.NET Core yra daugiaplatformė, atviro kodo, plati, greita ir modulinė sistema, skirta kurti našias žiniatinklio programas. Yra keli būdai, kuriais galite perduoti parametrus veiksmų metodams sistemoje ASP.NET Core MVC. Galite juos perduoti per URL, užklausos eilutę, užklausos antraštę, užklausos turinį ar net formą. Šiame straipsnyje kalbama apie visus šiuos būdus ir iliustruojama kodų pavyzdžiais.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

Sukurkite ASP.NET Core MVC projektą „Visual Studio 2019“

Pirmiausia sukurkime „ASP.NET Core“ projektą „Visual Studio 2019“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „ASP.NET Core“ projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „ASP.NET Core Web Application“.
  4. Spustelėkite Pirmyn.
  5. Lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Pasirinktinai pažymėkite žymės langelį „Įdėti sprendimą ir projektą tame pačiame kataloge“, atsižvelgiant į jūsų pageidavimus.
  7. Spustelėkite Sukurti.
  8. Kitame rodomame lange „Sukurti naują ASP.NET Core žiniatinklio programą“ viršuje esančiame išskleidžiamajame sąraše pasirinkite .NET Core kaip vykdymo laiką ir ASP.NET Core 3.1 (ar naujesnę).
  9. Norėdami sukurti naują ASP.NET Core MVC programą, kaip projekto šabloną pasirinkite „Web Application (Model-View-Controller)“.
  10. Įsitikinkite, kad nepažymėti žymės langeliai „Įgalinti„ Docker “palaikymą“ ir „Konfigūruoti HTTPS“, nes čia nenaudosime tų funkcijų.
  11. Įsitikinkite, kad autentifikavimas nustatytas kaip „Nėra autentifikavimo“, nes mes taip pat nenaudosime autentifikavimo.
  12. Spustelėkite Sukurti.

Atlikę šiuos veiksmus turėtumėte sukurti naują „ASP.NET Core MVC“ projektą „Visual Studio 2019“. Šį projektą naudosime toliau pateiktose skiltyse, kad iliustruotume įvairius parametrų perdavimo metodams ASP.NET Core 3.1 metodus.

Sukurkite „AuthorRepository“ klasę ASP.NET Core MVC

Šiame pavyzdyje naudosime saugyklos klasę - valdiklio veiksmo metodai sąveikaus su CRUD operacijų saugyklos klasės metodais. Pirmiausia sukursime modelio klasę pavadinimu Autorius su minimaliomis savybėmis, kad būtų paprasčiau, kaip parodyta toliau pateiktame kodo fragmente.

  visuomenės klasės Autorius

    {

public int Id {get; rinkinys; }

public string FirstName {get; rinkinys; }

vieša eilutė Pavardė {get; rinkinys; }

    }

„AuthorRepository“ klasėje yra metodai, kaip gauti „Author“ klasės egzempliorius iš bendro sąrašo ir įtraukti naujus „Author“ klasės egzempliorius į bendrąjį sąrašą. „GetAuthors“ metodas grąžina duomenų puslapį, puslapio numeris jam perduodamas kaip argumentas.

  viešosios klasės autorių saugykla

    {

Sąrašo autoriai = naujas sąrašas ()

        {

naujas Autorius

            {

Id = 1,

FirstName = "Joydip",

Pavardė = "Kanjilal"

            },

naujas Autorius

            {

Id = 2,

FirstName = "Steve",

Pavardė = "Smithas"

            }

        };

viešasis autorius „GetAuthor“ (int id)

        {

grąžinti autorius.FirstOrDefault (a => a.Id == id);

        }

viešas „GetAuthors“ sąrašas (int pageNumber = 1)

        {

int pageSize = 10;

int praleisti = pageSize * (pageNumber - 1);

jei (autoriai. Skaičius <pageSize)

pageSize = autoriai.Skaičius;

grįžtantys autoriai

.Pereiti (praleisti)

.Take (pageSize) .ToList ();

        }

public bool Save (Autoriaus autorius)

        {

var rezultatas = autoriai.Kur (a => a.Id == autorius.Id);

jei (rezultatas! = nulis)

            {

jei (rezultatas.Skaičius () == 0)

                {

autoriai.Pridėti (autorius);

grįžti tiesa;

                }

            }

grąžinti klaidingą;

        }

    }

Perduokite parametrus per URL ASP.NET Core MVC

Vienas iš paprasčiausių ir paprasčiausių būdų perduoti parametrus veiksmo metodui yra jų perdavimas per URL. Šis kodo fragmentas parodo, kaip galite perduoti parametrus URL.

[HttpGet]

[Maršrutas („Default / GetAuthor / {authorId: int}“)]

public IActionResult GetAuthor (int authorId)

{

var duomenys = authorRepository.GetAuthor (authorId);

grįžti View (duomenys);

}

Galutinio taško URL yra:

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

Perduokite parametrus per užklausos eilutę ASP.NET Core MVC

Parametrų perdavimas užklausos eilutėje yra dar viena galimybė. Tam nereikia keisti maršruto informacijos, todėl jis yra suderinamas atgal. Apsvarstykite šį kodo fragmentą, kuris iliustruoja, kaip galite perduoti parametrus per užklausos eilutes veiksmo metodu.

[HttpGet]

[Maršrutas („Default / GetAuthors / {pageNumber: int}“)]

viešieji „IActionResult GetAuthors“ ([FromQuery

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

{

var data = authorRepository.GetAuthors (pageNumber);

grįžti Ok (duomenys);

}

Čia yra URL, norint pasiekti šį galinį tašką:

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

„GetAuthors“ metodas priima puslapio numerį kaip argumentą, išsiųstą jam per užklausos eilutę. Atkreipkite dėmesį, kad pageNumber yra neprivalomas parametras - jei šiam metodui nepateikiamas joks parametras, puslapio numeris bus interpretuojamas kaip 1. Metodas pateikia nurodyto puslapio autoriaus įrašus. Mūsų pavyzdyje, jei duomenų saugykloje yra 100 autorių įrašų, o puslapio numeris yra 3, šis metodas grąžins įrašus nuo 31 iki 40. (Atkreipkite dėmesį, kad autorių skaičius viename puslapyje yra sunkiai užkoduotas; Autoriaus saugyklos klasė.)

Perduokite parametrus per užklausos antraštę ASP.NET Core MVC

Užklausos antraštė yra dar viena galimybė perduoti parametrus jūsų veiksmų metodams. Dažnas to atvejis yra kredencialų ar bet kokių kitų slaptų duomenų perdavimas per laidą. Šis kodo fragmentas iliustruoja veiksmo metodą, kuris priima kredito kortelės numerį kaip parametrą ir pateikia teisingą, jei kredito kortelės numeris galioja.

[HttpGet]

[Maršrutas („Default / IsCreditCardValid / {creditCardNumber}“)]

public IActionResult IsCreditCardValid ([FromHeader] eilutė creditCardNumber)

{

eilutė regexExpression =

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

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

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

Regex regex = naujas regexas (regexExpression);

var match = regex.Match (creditCardNumber);

grįžti Gerai (rungtynės. Sėkmė);

}

Siekiant paprastumo, „IsCreditCardValid“ veiksmo metodas patvirtina tik „Visa“, „MasterCard“ ir „Amex“ kreditines korteles. Norėdami išplėsti kitų tipų korteles, galite išplėsti „IsCreditCardValid“ metodą. Kadangi kredito kortelės numeris turėtų būti perduotas saugiai, naudokite užklausos antraštę. 1 paveiksle parodyta, kaip galite nurodyti savo kredito kortelės numerį kaip parametrą per užklausos antraštę.

Perduokite parametrus per užklausos turinį ASP.NET Core MVC

Atliekant įterpimo ar atnaujinimo operacijas, dažnai reikės perduoti parametrus per užklausos turinį. Šis kodo fragmentas parodo, kaip galite perduoti „Author“ klasės egzempliorių per užklausos turinį.

[HttpPost]

[Maršrutas („Numatytasis / Įterpti“)]

public IActionResult Insert ([FromBody] Autoriaus autorius)

{

grąžinti Gerai (authorRepository.Save (autorius));

}

2 paveiksle parodyta, kaip galite nurodyti duomenis, kurie bus įterpti į užklausos turinį.

Pilnas mūsų DefaultController klasės šaltinio kodas

Pilnas „DefaultController“ klasės kodas pateikiamas žemiau.

 public class DefaultController: valdiklis

    {

privati ​​tik skaitoma AuthorRepository authorRepository =

nauja Autorių saugykla ();

[HttpGet]

[Maršrutas („Default / GetAuthor / {authorId: int}“)]

public IActionResult GetAuthor (int authorId)

        {

var duomenys = authorRepository.GetAuthor (authorId);

grįžti Ok (duomenys);

        }

[HttpGet]

[Maršrutas („Default / GetAuthors / {pageNumber: int}“)]

viešieji „IActionResult GetAuthors“ ([FromQuery

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

        {

var data = authorRepository.GetAuthors (pageNumber);

grįžti Ok (duomenys);

        }

[HttpGet]

[Maršrutas („Default / IsCreditCardValid / {creditCardNumber}“)]

public IActionResult IsCreditCardValid

([FromHeader] eilutė creditCardNumber)

        {

eilutė regexExpression =

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

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

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

Regex regex = naujas regexas (regexExpression);

var match = regex.Match (creditCardNumber);

grįžti Gerai (rungtynės. Sėkmė);

        }

[HttpPost]

[Maršrutas („Numatytasis / Įterpti“)]

public IActionResult Insert ([FromBody] Autoriaus autorius)

        {

grąžinti Gerai (authorRepository.Save (autorius));

        }

    }

Galiausiai parametrus taip pat galite perduoti per formą. Forma dažnai naudojama, kai norite įkelti failą. Šiuo atveju turėtumėte pasinaudoti IFormFile sąsaja.

Kaip padaryti daugiau naudojant „ASP.NET Core“:

  • Kaip naudoti API analizatorius ASP.NET Core
  • Kaip naudoti maršruto duomenų žetonus ASP.NET Core
  • Kaip naudoti API versijas „ASP.NET Core“
  • Kaip naudoti duomenų perdavimo objektus ASP.NET Core 3.1
  • Kaip tvarkyti 404 klaidas ASP.NET Core MVC
  • Kaip naudoti priklausomybės įpurškimą veiksmo filtruose ASP.NET Core 3.1
  • Kaip naudoti ASP.NET Core parinkčių modelį
  • Kaip naudoti galinių taškų nukreipimą ASP.NET Core 3.0 MVC
  • Kaip eksportuoti duomenis į „Excel“ naudojant ASP.NET Core 3.0
  • Kaip naudoti „LoggerMessage“ ASP.NET Core 3.0
  • Kaip siųsti el. Laiškus naudojant ASP.NET Core
  • Kaip registruoti duomenis į „SQL Server“ naudojant ASP.NET Core
  • Kaip suplanuoti darbus naudojant „Quartz.NET“ ASP.NET Core
  • Kaip grąžinti duomenis iš ASP.NET Core Web API
  • Kaip formatuoti atsakymo duomenis ASP.NET Core
  • Kaip suvartoti ASP.NET Core Web API naudojant „RestSharp“
  • Kaip atlikti asinchronines operacijas naudojant „Dapper“
  • Kaip naudoti funkcijų žymes „ASP.NET Core“
  • Kaip naudoti „FromServices“ atributą „ASP.NET Core“
  • Kaip dirbti su slapukais ASP.NET Core
  • Kaip dirbti su statiniais failais sistemoje ASP.NET Core
  • Kaip naudoti URL perrašymo tarpinę programinę įrangą ASP.NET Core
  • Kaip įdiegti normos ribojimą ASP.NET Core
  • Kaip naudoti „Azure Application Insights“ ASP.NET Core
  • Išplėstinių „NLog“ funkcijų naudojimas „ASP.NET Core“
  • Kaip tvarkyti klaidas ASP.NET žiniatinklio API
  • Kaip įdiegti visuotinį išimčių tvarkymą ASP.NET Core MVC
  • Kaip tvarkyti nulines reikšmes ASP.NET Core MVC
  • Išplėstinė ASP.NET „Core Web API“ versijų versija
  • Kaip dirbti su darbuotojų paslaugomis ASP.NET Core
  • Kaip naudoti duomenų apsaugos API ASP.NET Core
  • Kaip naudoti sąlyginę tarpinę programinę įrangą ASP.NET Core
  • Kaip dirbti su seanso būsena ASP.NET Core
  • Kaip rašyti efektyvius valdiklius ASP.NET Core