Ohjelmointi

Parametrien siirtäminen toimintamenetelmiin ASP.NET Core MVC: ssä

ASP.NET Core on monialustainen, avoimen lähdekoodin, kevyt, nopea ja modulaarinen kehys tehokkaiden verkkosovellusten rakentamiseen. On olemassa useita tapoja, joilla parametreja voidaan välittää toimintamenetelmiin ASP.NET Core MVC: ssä. Voit välittää ne URL-osoitteen, kyselymerkkijonon, pyynnön otsikon, pyynnön rungon tai jopa lomakkeen kautta. Tässä artikkelissa puhutaan kaikista näistä tavoista ja havainnollistetaan niitä koodiesimerkkeillä.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo ASP.NET Core MVC -projekti Visual Studio 2019: ssä

Ensinnäkin, luodaan ASP.NET-ydinprojekti Visual Studio 2019: ssä. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi ASP.NET Core -projekti Visual Studiossa noudattamalla alla olevia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”ASP.NET Core Web Application” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä uuden projektin määritys -ikkunassa uuden projektin nimi ja sijainti.
  6. Valitse vaihtoehtoisesti Sijoita ratkaisu ja projekti samaan hakemistoon -valintaruutu mieltymystesi mukaan.
  7. Napsauta Luo.
  8. Valitse seuraavassa näkyvässä "Luo uusi ASP.NET-ydinverkkosovellus" -ikkunassa .NET Core ajonaikaisena ja ASP.NET Core 3.1 (tai uudempi) yläreunan avattavasta luettelosta.
  9. Luo uusi ASP.NET Core MVC -sovellus valitsemalla projektisivuksi ”Web-sovellus (Model-View-Controller)”.
  10. Varmista, että valintaruudut Ota Docker-tuki käyttöön ja Määritä HTTPS: lle ei ole valittu, koska emme käytä näitä ominaisuuksia täällä.
  11. Varmista, että todennuksen asetuksena on Ei todentamista, koska emme myöskään käytä todennusta.
  12. Napsauta Luo.

Näiden vaiheiden noudattamisen pitäisi luoda uusi ASP.NET Core MVC -projekti Visual Studio 2019: ssä. Käytämme tätä projektia alla olevissa osioissa havainnollistaaksemme erilaisia ​​menetelmiä parametrien siirtämiseksi toimintamenetelmiin ASP.NET Core 3.1: ssä.

Luo AuthorRepository-luokka ASP.NET Core MVC: ssä

Tässä esimerkissä käytämme arkistoluokkaa - ohjaimen toimintamenetelmät ovat vuorovaikutuksessa CRUD-operaatioiden arkistoluokan menetelmien kanssa. Luomme ensin Kirjoittaja-malliluokan, jolla on minimaaliset ominaisuudet yksinkertaisuuden vuoksi, kuten alla olevassa koodinpätkässä näkyy.

  public class Kirjoittaja

    {

julkinen int Id {get; aseta; }

julkinen merkkijono Etunimi {get; aseta; }

julkinen merkkijono Sukunimi {get; aseta; }

    }

AuthorRepository-luokka sisältää menetelmiä Author-luokan esiintymien hakemiseksi yleisestä luettelosta sekä uusien Author-luokan esiintymien lisäämiseksi yleisluetteloon. GetAuthors-menetelmä palauttaa sivun tiedot, jonka sivunumero välitetään sille argumenttina.

  public class AuthorRepository

    {

Luettelon tekijät = uusi Lista ()

        {

uusi kirjailija

            {

Id = 1,

Etunimi = "Joydip",

Sukunimi = "Kanjilal"

            },

uusi kirjailija

            {

Id = 2,

Etunimi = "Steve",

Sukunimi = "Smith"

            }

        };

julkinen kirjailija GetAuthor (int id)

        {

palauttaa kirjoittajat.FirstOrDefault (a => a.Id == id);

        }

julkinen GetAuthors-luettelo (int pageNumber = 1)

        {

int pageSize = 10;

int ohita = pageSize * (sivunumero - 1);

if (tekijät.Määrä <pageSize)

pageSize = tekijät.Määrä;

palauttavat kirjoittajat

Ohita (ohita)

.Take (pageSize) .ToList ();

        }

public bool Save (Kirjoittaja)

        {

var tulos = tekijät. missä (a => a.Id == tekijä.Id);

jos (tulos! = nolla)

            {

jos (tulos.Määrä () == 0)

                {

kirjoittajat.Lisää (tekijä);

palaa tosi;

                }

            }

return false;

        }

    }

Välitä parametrit URL-osoitteen kautta ASP.NET Core MVC: ssä

Yksi yksinkertaisin ja helpoin tapa siirtää parametrit toimintamenetelmälle on välittää se URL-osoitteen kautta. Seuraava koodinpätkä kuvaa, kuinka parametreja voidaan välittää URL-osoitteessa.

[HttpGet]

[Reitti ("Default / GetAuthor / {authorId: int}")]

public IActionResult GetAuthor (int authorId)

{

var data = authorRepository.GetAuthor (authorId);

return View (tiedot);

}

Päätepisteen URL-osoite on:

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

Välitä parametrit kyselymerkkijonon kautta ASP.NET Core MVC: ssä

Parametrien välittäminen kyselymerkkijonossa on toinen vaihtoehto. Se ei vaadi reititystietojen muuttamista, joten se on taaksepäin yhteensopiva. Harkitse seuraavaa koodinpätkää, joka kuvaa, kuinka parametreja voidaan välittää toimintamenetelmän kyselymerkkijonojen kautta.

[HttpGet]

[Reitti ("Oletus / GetAuthors / {sivunumero: int}")]

julkiset IActionResult GetAuthors ([FromQuery

(Nimi = "sivunumero")] sis. Sivunumero = 1)

{

var data = authorRepository.GetAuthors (sivunumero);

palaa Ok (data);

}

Tässä on URL-osoite, jolla pääset tähän päätepisteeseen:

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

GetAuthors-menetelmä hyväksyy sivunumeron argumenttina, joka lähetetään sille kyselymerkkijonon kautta. Huomaa, että pageNumber on valinnainen parametri - jos tälle menetelmälle ei välitetä parametria, sivunumero tulkitaan 1. Menetelmä palauttaa määritetyn sivun kirjoittajatietueet. Esimerkissämme, jos tietovarastossa on 100 kirjoittajatietueita ja sivunumero on 3, tämä menetelmä palauttaisi tietueet 31-40. (Huomaa, että tekijöiden lukumäärä sivua kohti on koodattu kovalla koodilla; se on määritetty 10 AuthorRepository-luokka.)

Parametrien välittäminen pyynnön otsikon kautta ASP.NET Core MVC: ssä

Pyynnön otsikko on jälleen yksi vaihtoehto parametrien siirtämiseksi toimintamenetelmiin. Yleinen käyttötapaus tähän on tunnistetietojen tai muun salaisen tiedon välittäminen langan kautta. Seuraava koodikatkelma kuvaa toimintamenetelmää, joka hyväksyy luottokortin numeron parametrina ja palauttaa arvon true, jos luottokortin numero on kelvollinen.

[HttpGet]

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

public IActionResult IsCreditCardValid ([FromHeader] merkkijono creditCardNumber)

{

merkkijono regexExpression =

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

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

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

Regex regex = uusi Regex (regexExpression);

var match = regex.Match (creditCardNumber);

palaa Ok (match.Success);

}

Yksinkertaisuuden vuoksi IsCreditCardValid-toimintamenetelmä validoi vain Visa-, MasterCard- ja Amex-luottokortit. Voit laajentaa IsCreditCardValid-menetelmää vahvistaaksesi muut korttityypit. Koska luottokortin numero on välitettävä turvallisesti, pyynnön otsikon käyttö on hyvä valinta tässä. Kuvassa 1 esitetään, kuinka voit määrittää luottokorttisi numeron parametriksi pyynnön otsikon kautta.

Anna parametrit pyynnön rungon kautta ASP.NET Core MVC: ssä

Sinun on usein välitettävä parametrit pyynnön rungon kautta, kun suoritat lisäys- tai päivitystoimintoja. Seuraava koodinpätkä kuvaa, kuinka voit siirtää Author-luokan esiintymän pyynnön rungon kautta.

[HttpPost]

[Reitti ("Oletus / Lisää")]

public IActionResult Insert ([FromBody] Kirjoittaja)

{

palauta Ok (authorRepository.Save (tekijä));

}

Kuvassa 2 on esitetty, miten voit määrittää pyynnön runkoon lisättävät tiedot.

Täydellinen DefaultController-luokan lähdekoodi

DefaultController-luokan täydellinen koodi on alla viitteenä.

 public class DefaultController: Ohjain

    {

private readonly AuthorRepository authorRepository =

uusi AuthorRepository ();

[HttpGet]

[Reitti ("Default / GetAuthor / {authorId: int}")]

public IActionResult GetAuthor (int authorId)

        {

var data = authorRepository.GetAuthor (authorId);

palaa Ok (data);

        }

[HttpGet]

[Reitti ("Oletus / GetAuthors / {sivunumero: int}")]

julkiset IActionResult GetAuthors ([FromQuery

(Nimi = "sivunumero")] sis. Sivunumero = 1)

        {

var data = authorRepository.GetAuthors (sivunumero);

palaa Ok (data);

        }

[HttpGet]

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

public IActionResult IsCreditCardValid

([FromHeader] merkkijono creditCardNumber)

        {

merkkijono regexExpression =

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

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

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

Regex regex = uusi Regex (regexExpression);

var match = regex.Match (creditCardNumber);

palaa Ok (match.Success);

        }

[HttpPost]

[Reitti ("Oletus / Lisää")]

public IActionResult Insert ([FromBody] Kirjoittaja)

        {

palauta OK (authorRepository.Save (tekijä));

        }

    }

Lopuksi voit välittää parametrit myös lomakkeen kautta. Lomaketta käytetään usein, kun haluat ladata tiedoston. Sinun tulisi tässä tapauksessa hyödyntää IFormFile-käyttöliittymää.

Kuinka tehdä enemmän ASP.NET Core -sovelluksessa:

  • Kuinka käyttää API-analysaattoreita ASP.NET Core -sovelluksessa
  • Kuinka käyttää reittitunnuksia ASP.NET Core -sovelluksessa
  • Kuinka käyttää API-versiota ASP.NET Core -sovelluksessa
  • Kuinka käyttää tiedonsiirtoobjekteja ASP.NET Core 3.1: ssä
  • Kuinka käsitellä 404 virhettä ASP.NET Core MVC: ssä
  • Riippuvuusinjektion käyttäminen ASP.NET Core 3.1 -suodattimissa
  • Asetuskuvion käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää päätepisteiden reititystä ASP.NET Core 3.0 MVC: ssä
  • Tietojen vieminen Exceliin ASP.NET Core 3.0: ssa
  • LoggerMessagen käyttäminen ASP.NET Core 3.0: ssa
  • Kuinka lähettää sähköposteja ASP.NET Core -sovelluksessa
  • Tietojen kirjaaminen SQL Server -palvelimeen ASP.NET Core -sovelluksessa
  • Työn ajoitus Quartz.NET: n avulla ASP.NET Core -sovelluksessa
  • Tietojen palauttaminen ASP.NET Core Web -sovellusliittymästä
  • Kuinka muotoilla vastaustiedot ASP.NET Core -sovelluksessa
  • ASP.NET Core Web -sovellusliittymän kuluttaminen RestSharpin avulla
  • Asynkronointitoimintojen suorittaminen Dapperin avulla
  • Ominaisuuslippujen käyttäminen ASP.NET Core -sovelluksessa
  • FromServices-määritteen käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka toimia evästeiden kanssa ASP.NET Core -sovelluksessa
  • Staattisten tiedostojen käsittely ASP.NET Core -sovelluksessa
  • URL: n uudelleenkirjoittamisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Nopeudenrajoituksen toteuttaminen ASP.NET Core -sovelluksessa
  • Kuinka käyttää Azure Application Insightsia ASP.NET Core -sovelluksessa
  • NLog-lisäominaisuuksien käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka käsitellä virheitä ASP.NET Web API: ssa
  • Kuinka toteuttaa maailmanlaajuinen poikkeusten käsittely ASP.NET Core MVC: ssä
  • Kuinka käsitellä nolla-arvoja ASP.NET Core MVC: ssä
  • Edistynyt versiointi ASP.NET Core Web -sovellusliittymässä
  • Kuinka työskennellä työntekijöiden palveluiden kanssa ASP.NET Core -sovelluksessa
  • Tietosuoja-sovellusliittymän käyttö ASP.NET Core -sovelluksessa
  • Ehdollisen väliohjelmiston käyttäminen ASP.NET Core -sovelluksessa
  • Istunnon tilan käyttäminen ASP.NET Core -sovelluksessa
  • Kuinka kirjoittaa tehokkaita ohjaimia ASP.NET Core -sovellukseen