Programmering

Hvordan overføre parametere til handlingsmetoder i ASP.NET Core MVC

ASP.NET Core er en plattform, åpen kildekode, slank, rask og modulær ramme for å bygge høyytelses webapplikasjoner. Det er flere måter du kan overføre parametere til handlingsmetoder i ASP.NET Core MVC. Du kan sende dem via en URL, en spørringsstreng, en forespørselstittel, en forespørselstekst eller til og med et skjema. Denne artikkelen snakker om alle disse måtene, og illustrerer dem med kodeeksempler.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et ASP.NET Core MVC-prosjekt i Visual Studio 2019

For det første, la oss lage et ASP.NET Core-prosjekt i Visual Studio 2019. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt ASP.NET Core-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "ASP.NET Core Web Application" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet "Konfigurer ditt nye prosjekt" angir du navnet og stedet for det nye prosjektet.
  6. Merk av for "Plasser løsning og prosjekt i samme katalog", avhengig av dine preferanser.
  7. Klikk på Opprett.
  8. I vinduet "Opprett et nytt ASP.NET Core Web Application" som vises, velger du .NET Core som kjøretid og ASP.NET Core 3.1 (eller senere) fra rullegardinlisten øverst.
  9. Velg "Web Application (Model-View-Controller)" som prosjektmal for å opprette et nytt ASP.NET Core MVC-program.
  10. Forsikre deg om at avmerkingsboksene "Aktiver Docker-støtte" og "Konfigurer for HTTPS" ikke er merket av da vi ikke bruker disse funksjonene her.
  11. Forsikre deg om at autentisering er satt til "ingen godkjenning", da vi heller ikke bruker autentisering.
  12. Klikk på Opprett.

Ved å følge disse trinnene, bør det opprette et nytt ASP.NET Core MVC-prosjekt i Visual Studio 2019. Vi bruker dette prosjektet i avsnittene nedenfor for å illustrere de forskjellige metodene for å overføre parametere til handlingsmetoder i ASP.NET Core 3.1.

Opprett en AuthorRepository-klasse i ASP.NET Core MVC

I dette eksemplet bruker vi en depotklasse - handlingsmetodene i kontrolleren vil samhandle med metodene i depotklassen for CRUD-operasjoner. Vi oppretter først en modellklasse med navnet Forfatter med minimale egenskaper for enkelhets skyld, som vist i kodebiten gitt nedenfor.

  offentlig klasse Forfatter

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

    }

Klassen AuthorRepository inneholder metoder for å hente forekomster av forfatterklassen fra en generell liste, samt for å legge til nye forekomster av forfatterklassen til den generiske listen. GetAuthors-metoden returnerer en side med data, og sidenummeret blir sendt 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 skip = pageSize * (pageNumber - 1);

if (author.Count <pageSize)

pageSize = author.Count;

returnere forfattere

.Hopp over (hopp over)

.Take (pageSize) .ToList ();

        }

public bool Save (Forfatterforfatter)

        {

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

hvis (resultat! = null)

            {

hvis (resultat.Count () == 0)

                {

author.Add (forfatter);

returner sant;

                }

            }

returner falsk;

        }

    }

Pass parametere via URL i ASP.NET Core MVC

En av de enkleste og enkleste måtene å overføre parametere til en handlingsmetode er å sende den via URL-en. Følgende kodebit illustrerer hvordan du kan overføre parametere i URL-en.

[HttpGet]

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

offentlig IActionResult GetAuthor (int authorId)

{

var data = authorRepository.GetAuthor (authorId);

return Vis (data);

}

URL-en til endepunktet er:

FÅ: // localhost: 8061 / Standard / GetAuthor / 1

Pass parametere via spørringsstreng i ASP.NET Core MVC

Overføring av parametere i spørringsstrengen er et annet alternativ. Det krever ikke endring av ruteinformasjonen og er dermed bakoverkompatibel. Vurder følgende kodebit som illustrerer hvordan du kan overføre parametere via spørringsstrenger i en handlingsmetode.

[HttpGet]

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

offentlige IActionResult GetAuthors ([FromQuery

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

{

var data = authorRepository.GetAuthors (pageNumber);

returner Ok (data);

}

Her er URL-en for tilgang til dette endepunktet:

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

GetAuthors-metoden godtar sidenummeret som et argument som sendes til det via spørringsstreng. Merk at pageNumber er en valgfri parameter - hvis ingen parameter sendes til denne metoden, vil sidetallet tolkes som 1. Metoden returnerer forfatteroppføringene for den angitte siden. I vårt eksempel, hvis det er 100 forfatteroppføringer i datalageret og sidetallet er 3, vil denne metoden returnere postene 31 til 40. (Merk at antall forfattere per side er hardkodet; den er spesifisert som 10 i ForfatterRepository-klasse.)

Pass parametere via forespørselstittel i ASP.NET Core MVC

Forespørselstittelen er enda et alternativ for å overføre parametere til handlingsmetodene dine. En vanlig brukssak for dette er å sende legitimasjon eller andre hemmelige data over ledningen. Følgende kodebit illustrerer en handlingsmetode som godtar et kredittkortnummer som en parameter og returnerer true hvis kredittkortnummeret er gyldig.

[HttpGet]

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

public IActionResult IsCreditCardValid ([FromHeader] string creditCardNumber)

{

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);

return Ok (match.Success);

}

For enkelhets skyld validerer handlingsmetoden IsCreditCardValid kun Visa-, MasterCard- og Amex-kredittkort. Du kan utvide metoden IsCreditCardValid for å validere andre korttyper. Siden kredittkortnummeret skal sendes sikkert, er bruk av forespørselstittelen et godt valg her. Figur 1 viser hvordan du kan spesifisere kredittkortnummeret ditt som en parameter via forespørselstittel.

Pass parametere via forespørselsorgan i ASP.NET Core MVC

Du må ofte sende parametere via forespørselsorganet når du utfører innsettings- eller oppdateringsoperasjoner. Følgende kodebit illustrerer hvordan du kan sende en forekomst av forfatterklassen via forespørselens brødtekst.

[HttpPost]

[Rute ("Standard / Sett inn")]

public IActionResult Insert ([FromBody] Forfatterforfatter)

{

returner Ok (authorRepository.Save (forfatter));

}

Figur 2 viser hvordan du kan spesifisere dataene som skal settes inn i forespørselen.

Komplett kildekode i vår StandardController-klasse

Den komplette koden til klassen DefaultController er gitt nedenfor for din referanse.

 offentlig klasse DefaultController: Controller

    {

privat readonly AuthorRepository authorRepository =

nytt AuthorRepository ();

[HttpGet]

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

offentlig IActionResult GetAuthor (int authorId)

        {

var data = authorRepository.GetAuthor (authorId);

returner Ok (data);

        }

[HttpGet]

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

offentlige IActionResult GetAuthors ([FromQuery

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

        {

var data = authorRepository.GetAuthors (pageNumber);

returner Ok (data);

        }

[HttpGet]

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

offentlig IActionResult IsCreditCardValid

([FromHeader] streng creditCardNumber)

        {

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);

return Ok (match.Success);

        }

[HttpPost]

[Rute ("Standard / Sett inn")]

public IActionResult Insert ([FromBody] Forfatterforfatter)

        {

returner Ok (authorRepository.Save (forfatter));

        }

    }

Til slutt kan du også sende parametere via et skjema. Et skjema brukes ofte når du vil laste opp en fil. I dette tilfellet må du dra nytte av IFormFile-grensesnittet.

Hvordan gjøre mer i ASP.NET Core:

  • Hvordan bruke API-analysatorer i ASP.NET Core
  • Hvordan bruke rutedata tokens i ASP.NET Core
  • Hvordan bruke API-versjonering i ASP.NET Core
  • Hvordan bruke dataoverføringsobjekter i ASP.NET Core 3.1
  • Hvordan håndtere 404 feil i ASP.NET Core MVC
  • Hvordan bruke avhengighetsinjeksjon i handlingsfiltre i ASP.NET Core 3.1
  • Hvordan bruke alternativmønsteret i ASP.NET Core
  • Hvordan bruke endepunktsruting i ASP.NET Core 3.0 MVC
  • Slik eksporterer du data til Excel i ASP.NET Core 3.0
  • Hvordan bruke LoggerMessage i ASP.NET Core 3.0
  • Hvordan sende e-post i ASP.NET Core
  • Hvordan logge data til SQL Server i ASP.NET Core
  • Hvordan planlegge jobber med Quartz.NET i ASP.NET Core
  • Hvordan returnere data fra ASP.NET Core Web API
  • Hvordan formatere svardata i ASP.NET Core
  • Slik bruker du et ASP.NET Core Web API ved hjelp av RestSharp
  • Hvordan utføre asynkroniseringsoperasjoner ved hjelp av Dapper
  • Hvordan bruke funksjonsflagg i ASP.NET Core
  • Hvordan bruke attributtet FromServices i ASP.NET Core
  • Hvordan jobbe med informasjonskapsler i ASP.NET Core
  • Hvordan jobbe med statiske filer i ASP.NET Core
  • Hvordan bruke URL Rewriting Middleware i ASP.NET Core
  • Hvordan implementere hastighetsbegrensning i ASP.NET Core
  • Hvordan bruke Azure Application Insights i ASP.NET Core
  • Bruker avanserte NLog-funksjoner i ASP.NET Core
  • Hvordan håndtere feil i ASP.NET Web API
  • Hvordan implementere global unntaksbehandling i ASP.NET Core MVC
  • Hvordan håndtere nullverdier i ASP.NET Core MVC
  • Avansert versjonering i ASP.NET Core Web API
  • Hvordan jobbe med arbeidstjenester i ASP.NET Core
  • Hvordan bruke API for databeskyttelse i ASP.NET Core
  • Hvordan bruke betinget mellomvare i ASP.NET Core
  • Hvordan jobbe med økttilstand i ASP.NET Core
  • Hvordan skrive effektive kontrollere i ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found