Programmering

Sådan overføres parametre til handlingsmetoder i ASP.NET Core MVC

ASP.NET Core er en platform, åben kilde, lean, hurtig og modulær ramme til opbygning af højtydende webapplikationer. Der er en række måder, hvorpå du kan overføre parametre til handlingsmetoder i ASP.NET Core MVC. Du kan videregive dem via en URL, en forespørgselsstreng, en anmodningsoverskrift, en anmodningstekst eller endda en formular. Denne artikel taler om alle disse måder og illustrerer dem med kodeeksempler.

For at arbejde med kodeeksemplerne i denne artikel skal du have Visual Studio 2019 installeret i dit system. Hvis du ikke allerede har en kopi, kan du downloade Visual Studio 2019 her.

Opret et ASP.NET Core MVC-projekt i Visual Studio 2019

Lad os først oprette et ASP.NET Core-projekt i Visual Studio 2019. Forudsat at Visual Studio 2019 er installeret i dit system, skal du følge nedenstående trin for at oprette et nyt ASP.NET Core-projekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klik på "Opret nyt projekt."
  3. I vinduet "Opret nyt projekt" skal du vælge "ASP.NET Core Web Application" fra listen over skabeloner, der vises.
  4. Klik på Næste.
  5. I vinduet "Konfigurer dit nye projekt" skal du angive navnet og placeringen for det nye projekt.
  6. Marker afkrydsningsfeltet "Placer løsning og projekt i samme bibliotek" afhængigt af dine præferencer.
  7. Klik på Opret.
  8. I vinduet "Opret en ny ASP.NET Core-webapplikation", der vises derefter, skal du vælge .NET Core som runtime og ASP.NET Core 3.1 (eller senere) fra rullelisten øverst.
  9. Vælg "Webapplikation (Model-View-Controller)" som projektskabelon for at oprette et nyt ASP.NET Core MVC-program.
  10. Sørg for, at afkrydsningsfelterne "Aktivér Docker-support" og "Konfigurer til HTTPS" ikke er markeret, da vi ikke bruger disse funktioner her.
  11. Sørg for, at godkendelse er indstillet til "Ingen godkendelse", da vi heller ikke bruger godkendelse.
  12. Klik på Opret.

Ved at følge disse trin skal der oprettes et nyt ASP.NET Core MVC-projekt i Visual Studio 2019. Vi bruger dette projekt i afsnittene nedenfor til at illustrere de forskellige metoder til overføring af parametre til handlingsmetoder i ASP.NET Core 3.1.

Opret en AuthorRepository-klasse i ASP.NET Core MVC

I dette eksempel bruger vi en lagerklasse - handlingsmetoderne i controlleren vil interagere med metoderne i lagerklassen til CRUD-operationer. Vi opretter først en modelklasse med navnet Forfatter med minimale egenskaber for enkelhedens skyld som vist i kodestykket nedenfor.

  offentlig klasse Forfatter

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

    }

Klassen AuthorRepository indeholder metoder til at hente forekomster af forfatterklassen fra en generisk liste samt til at tilføje nye forekomster af forfatterklassen til den generiske liste. GetAuthors-metoden returnerer en side med data, hvor sidetallet sendes til det som et argument.

  public class AuthorRepository

    {

Listeforfattere = ny liste ()

        {

ny forfatter

            {

Id = 1,

FirstName = "Joydip",

LastName = "Kanjilal"

            },

ny forfatter

            {

Id = 2,

FirstName = "Steve",

LastName = "Smith"

            }

        };

offentlig forfatter GetAuthor (int id)

        {

returnere forfattere.FirstOrDefault (a => a.Id == id);

        }

offentlig liste GetAuthors (int pageNumber = 1)

        {

int pageSize = 10;

int spring = pageSize * (pageNumber - 1);

hvis (author.Count <pageSize)

pageSize = forfattere.Tælling;

returnere forfattere

Spring over (spring over)

.Tag (pageSize) .ToList ();

        }

public bool Save (Forfatterforfatter)

        {

var resultat = forfattere. hvor (a => a.Id == forfatter.Id);

hvis (resultat! = null)

            {

hvis (resultat.Tælling () == 0)

                {

forfattere.Tilføj (forfatter);

returner sandt;

                }

            }

returner falsk;

        }

    }

Videregiv parametre via URL'en i ASP.NET Core MVC

En af de enkleste og nemmeste måder at overføre parametre til en handlingsmetode er at sende det via URL'en. Følgende kodestykke illustrerer, hvordan du kan overføre parametre i URL'en.

[HttpGet]

[Rute ("Standard / GetAuthor / {authorId: int}")]

offentlig IActionResult GetAuthor (int authorId)

{

var data = authorRepository.GetAuthor (authorId);

returner Visning (data);

}

URL'en til slutpunktet er:

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

Videregiv parametre via forespørgselsstreng i ASP.NET Core MVC

At videregive parametre i forespørgselsstrengen er en anden mulighed. Det kræver ikke ændring af routinginformation og er derfor bagudkompatibel. Overvej følgende kodestykke, der illustrerer, hvordan du kan overføre parametre via forespørgselsstrenge i en handlingsmetode.

[HttpGet]

[Rute ("Standard / GetAuthors / {pageNumber: int}")]

offentlige IActionResult GetAuthors ([FromQuery

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

{

var data = authorRepository.GetAuthors (pageNumber);

returnere Ok (data);

}

Her er URL'en for at få adgang til dette slutpunkt:

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

GetAuthors-metoden accepterer sidenummeret som et argument sendt til det via forespørgselsstreng. Bemærk, at pageNumber er en valgfri parameter - hvis der ikke sendes nogen parameter til denne metode, fortolkes sidetallet som 1. Metoden returnerer forfatteroptegnelserne for den angivne side. I vores eksempel, hvis der er 100 forfatteroptegnelser i datalageret, og sidenummeret er 3, returnerer denne metode poster 31 til 40. (Bemærk, at antallet af forfattere pr. Side er hårdt kodet; det er angivet som 10 i ForfatterRepository-klasse.)

Videregiv parametre via anmodningsoverskrift i ASP.NET Core MVC

Anmodningshovedet er endnu en mulighed for at videregive parametre til dine handlingsmetoder. En almindelig brugssag til dette er at sende legitimationsoplysninger eller andre hemmelige data over ledningen. Følgende kodestykke illustrerer en handlingsmetode, der accepterer et kreditkortnummer som en parameter og returnerer sandt, hvis kreditkortnummeret er gyldigt.

[HttpGet]

[Rute ("Standard / IsCreditCardValid / {creditCardNumber}")]

offentlig IActionResult IsCreditCardValid ([FromHeader] streng kreditkortnummer)

{

streng regexExpression =

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

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

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

Regex regex = ny Regex (regexExpression);

var match = regex.Match (creditCardNumber);

returnere Ok (match.Succes);

}

Af enkelheds skyld validerer IsCreditCardValid-handlingsmetoden kun Visa-, MasterCard- og Amex-kreditkort. Du kan udvide IsCreditCardValid-metoden til at validere andre korttyper. Da kreditkortnummeret skal sendes sikkert, er det et godt valg at bruge anmodningsoverskriften. Figur 1 viser, hvordan du kan angive dit kreditkortnummer som parameter via anmodningsoverskrift.

Videregiv parametre via anmodningsorgan i ASP.NET Core MVC

Du bliver ofte nødt til at videresende parametre via anmodningsorganet, når du udfører indsætnings- eller opdateringshandlinger. Følgende kodestykke illustrerer, hvordan du kan sende en forekomst af forfatterklassen via anmodningen.

[HttpPost]

[Rute ("Standard / Indsæt")]

offentlig IActionResult Insert ([FromBody] Forfatterforfatter)

{

returner Ok (authorRepository.Save (author));

}

Figur 2 viser, hvordan du kan specificere de data, der skal indsættes i anmodningsorganet.

Komplet kildekode i vores DefaultController-klasse

Den komplette kode i klassen DefaultController er angivet nedenfor til din reference.

 offentlig klasse DefaultController: Controller

    {

privat readonly AuthorRepository authorRepository =

nyt AuthorRepository ();

[HttpGet]

[Rute ("Standard / GetAuthor / {authorId: int}")]

offentlig IActionResult GetAuthor (int authorId)

        {

var data = authorRepository.GetAuthor (authorId);

returnere Ok (data);

        }

[HttpGet]

[Rute ("Standard / GetAuthors / {pageNumber: int}")]

offentlige IActionResult GetAuthors ([FromQuery

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

        {

var data = authorRepository.GetAuthors (pageNumber);

returnere Ok (data);

        }

[HttpGet]

[Rute ("Standard / IsCreditCardValid / {creditCardNumber}")]

offentlig IActionResult IsCreditCardValid

([FromHeader] streng kreditkortnummer)

        {

streng regexExpression =

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

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

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

Regex regex = ny Regex (regexExpression);

var match = regex.Match (creditCardNumber);

returnere Ok (match.Succes);

        }

[HttpPost]

[Rute ("Standard / Indsæt")]

offentlig IActionResult Insert ([FromBody] Forfatterforfatter)

        {

returner Ok (authorRepository.Save (author));

        }

    }

Endelig kan du også videregive parametre via en formular. En formular bruges ofte, når du vil uploade en fil. I dette tilfælde skal du udnytte IFormFile-grænsefladen.

Sådan gør du mere i ASP.NET Core:

  • Sådan bruges API-analysatorer i ASP.NET Core
  • Sådan bruges rutedata tokens i ASP.NET Core
  • Sådan bruges API-versionering i ASP.NET Core
  • Sådan bruges dataoverførselsobjekter i ASP.NET Core 3.1
  • Sådan håndteres 404 fejl i ASP.NET Core MVC
  • Sådan bruges afhængighedsindsprøjtning i handlingsfiltre i ASP.NET Core 3.1
  • Sådan bruges indstillingsmønsteret i ASP.NET Core
  • Sådan bruges slutpunktsrute i ASP.NET Core 3.0 MVC
  • Sådan eksporteres data til Excel i ASP.NET Core 3.0
  • Sådan bruges LoggerMessage i ASP.NET Core 3.0
  • Sådan sendes e-mails i ASP.NET Core
  • Sådan logges data til SQL Server i ASP.NET Core
  • Sådan planlægger du job med Quartz.NET i ASP.NET Core
  • Sådan returneres data fra ASP.NET Core Web API
  • Sådan formateres svardata i ASP.NET Core
  • Sådan forbruges en ASP.NET Core Web API ved hjælp af RestSharp
  • Sådan udføres asynkroniseringshandlinger ved hjælp af Dapper
  • Sådan bruges funktionsflag i ASP.NET Core
  • Sådan bruges attributten FromServices i ASP.NET Core
  • Sådan arbejder du med cookies i ASP.NET Core
  • Sådan arbejder du med statiske filer i ASP.NET Core
  • Sådan bruges URL-omskrivning af Middleware i ASP.NET Core
  • Sådan implementeres hastighedsbegrænsning i ASP.NET Core
  • Sådan bruges Azure Application Insights i ASP.NET Core
  • Brug af avancerede NLog-funktioner i ASP.NET Core
  • Sådan håndteres fejl i ASP.NET Web API
  • Sådan implementeres global undtagelseshåndtering i ASP.NET Core MVC
  • Sådan håndteres nulværdier i ASP.NET Core MVC
  • Avanceret versionering i ASP.NET Core Web API
  • Sådan arbejder du med arbejdertjenester i ASP.NET Core
  • Sådan bruges Data Protection API i ASP.NET Core
  • Sådan bruges betinget middleware i ASP.NET Core
  • Sådan arbejder du med sessionstilstand i ASP.NET Core
  • Sådan skriver du effektive controllere i ASP.NET Core