Programování

Jak předat parametry akčním metodám v ASP.NET Core MVC

ASP.NET Core je multiplatformní, otevřený, štíhlý, rychlý a modulární rámec pro vytváření vysoce výkonných webových aplikací. Existuje řada způsobů, kterými můžete předat parametry metodám akce v ASP.NET Core MVC. Můžete je předat prostřednictvím adresy URL, řetězce dotazu, záhlaví požadavku, těla požadavku nebo dokonce formuláře. Tento článek hovoří o všech těchto způsobech a ilustruje je na příkladech kódu.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt ASP.NET Core MVC v sadě Visual Studio 2019

Nejprve si vytvořme projekt ASP.NET Core ve Visual Studiu 2019. Za předpokladu, že je ve vašem systému nainstalovaná Visual Studio 2019, vytvořte nový projekt ASP.NET Core ve Visual Studiu podle níže uvedených kroků.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.NET Core“.
  4. Klikněte na Další.
  5. V okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Volitelně zaškrtněte políčko „Umístit řešení a projekt do stejného adresáře“, podle vašich preferencí.
  7. Klikněte na Vytvořit.
  8. V okně „Vytvořit novou webovou aplikaci ASP.NET Core“, které se zobrazí dále, vyberte jako běhový modul .NET Core a z rozevíracího seznamu v horní části vyberte ASP.NET Core 3.1 (nebo novější).
  9. Vyberte „Webová aplikace (Model-View-Controller)“ jako šablonu projektu a vytvořte novou aplikaci ASP.NET Core MVC.
  10. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  11. Ujistěte se, že je ověřování nastaveno na „Bez ověřování“, protože také nebudeme používat ověřování.
  12. Klikněte na Vytvořit.

Následující kroky by měly vytvořit nový projekt ASP.NET Core MVC v sadě Visual Studio 2019. Tento projekt použijeme v následujících částech k ilustraci různých metod předávání parametrů akčním metodám v ASP.NET Core 3.1.

Vytvořte třídu AuthorRepository v ASP.NET Core MVC

V tomto příkladu použijeme třídu úložiště - akční metody v ovladači budou interagovat s metodami třídy úložiště pro operace CRUD. Nejprve vytvoříme modelovou třídu s názvem Autor s minimálními vlastnostmi, abychom ji pro zjednodušení ukázali v níže uvedeném fragmentu kódu.

  veřejná třída Autor

    {

public int Id {get; soubor; }

public string FirstName {get; soubor; }

veřejný řetězec Příjmení {get; soubor; }

    }

Třída AuthorRepository obsahuje metody pro načítání instancí třídy Author z obecného seznamu i pro přidávání nových instancí třídy Author do obecného seznamu. Metoda GetAuthors vrací stránku dat, přičemž číslo stránky se jí předává jako argument.

  veřejná třída AuthorRepository

    {

Seznam autorů = nový Seznam ()

        {

nový autor

            {

Id = 1,

FirstName = "Joydip",

LastName = "Kanjilal"

            },

nový autor

            {

Id = 2,

FirstName = "Steve",

LastName = "Smith"

            }

        };

veřejný autor GetAuthor (int id)

        {

vrátit autory.FirstOrDefault (a => a.Id == id);

        }

veřejný seznam GetAuthors (int pageNumber = 1)

        {

int pageSize = 10;

int skip = pageSize * (pageNumber - 1);

if (autoři Počet <pageSize)

pageSize = autoři.Count;

vrátit autory

.Přeskočit (přeskočit)

.Take (pageSize) .ToList ();

        }

public bool Uložit (autor autor)

        {

var výsledek = autoři.Kde (a => a.Id == author.Id);

if (výsledek! = null)

            {

if (result.Count () == 0)

                {

autoři.Přidat (autor);

návrat true;

                }

            }

návrat false;

        }

    }

Předejte parametry prostřednictvím adresy URL v ASP.NET Core MVC

Jedním z nejjednodušších a nejjednodušších způsobů předání parametrů akční metodě je předání prostřednictvím adresy URL. Následující fragment kódu ukazuje, jak můžete předat parametry v adrese URL.

[HttpGet]

[Route („Výchozí / GetAuthor / {authorId: int}“)]

public IActionResult GetAuthor (int authorId)

{

var data = authorRepository.GetAuthor (authorId);

vrátit pohled (data);

}

Adresa URL koncového bodu je:

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

Předejte parametry pomocí řetězce dotazu v ASP.NET Core MVC

Další možností je předávání parametrů v řetězci dotazu. Nevyžaduje změnu informací o směrování, a proto je zpětně kompatibilní. Zvažte následující fragment kódu, který ukazuje, jak můžete předat parametry pomocí řetězců dotazu v metodě akce.

[HttpGet]

[Route („Výchozí / GetAuthors / {pageNumber: int}“)]

public IActionResult GetAuthors ([FromQuery

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

{

var data = authorRepository.GetAuthors (pageNumber);

návrat Ok (data);

}

Tady je adresa URL pro přístup k tomuto koncovému bodu:

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

Metoda GetAuthors přijímá číslo stránky jako argument odeslaný přes řetězec dotazu. Všimněte si, že pageNumber je volitelný parametr - pokud této metodě není předán žádný parametr, bude číslo stránky interpretováno jako 1. Metoda vrací záznamy autorů pro zadanou stránku. V našem příkladu, pokud je v úložišti dat 100 autorských záznamů a číslo stránky je 3, by tato metoda vrátila záznamy 31 až 40. (Všimněte si, že počet autorů na stránku je pevně zakódován; v AuthorRepository třída.)

Předejte parametry prostřednictvím záhlaví požadavku v ASP.NET Core MVC

Záhlaví požadavku je další možností pro předávání parametrů metodám vaší akce. Běžným případem použití je předávání pověření nebo jakýchkoli jiných tajných dat po drátu. Následující fragment kódu ilustruje metodu akce, která jako parametr přijímá číslo kreditní karty a vrací true, pokud je číslo kreditní karty platné.

[HttpGet]

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

public IActionResult IsCreditCardValid ([FromHeader] řetězec creditCardNumber)

{

řetězec regexExpression =

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

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

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

Regex regex = nový Regex (regexExpression);

var match = regex.Match (creditCardNumber);

návrat Ok (match.Success);

}

Kvůli zjednodušení akční metoda IsCreditCardValid ověřuje pouze kreditní karty Visa, MasterCard a Amex. Metodu IsCreditCardValid můžete rozšířit o ověření dalších typů karet. Protože číslo kreditní karty by mělo být předáno bezpečně, je zde dobrá volba použít záhlaví požadavku. Obrázek 1 ukazuje, jak můžete zadat číslo své kreditní karty jako parametr pomocí záhlaví požadavku.

Předejte parametry prostřednictvím těla požadavku v ASP.NET Core MVC

Při provádění operací vložení nebo aktualizace budete často muset předat parametry prostřednictvím těla žádosti. Následující fragment kódu ukazuje, jak můžete předat instanci třídy Author prostřednictvím těla požadavku.

[HttpPost]

[Trasa („Výchozí / Vložit“)]

public IActionResult Insert ([FromBody] autor autor)

{

návrat Ok (authorRepository.Save (autor));

}

Obrázek 2 ukazuje, jak můžete určit data, která se mají vložit do těla žádosti.

Kompletní zdrojový kód naší třídy DefaultController

Kompletní kód třídy DefaultController je uveden níže pro vaši referenci.

 veřejná třída DefaultController: Controller

    {

soukromé jen pro čtení AuthorRepository authorRepository =

new AuthorRepository ();

[HttpGet]

[Route („Výchozí / GetAuthor / {authorId: int}“)]

public IActionResult GetAuthor (int authorId)

        {

var data = authorRepository.GetAuthor (authorId);

návrat Ok (data);

        }

[HttpGet]

[Route ("Výchozí / GetAuthors / {pageNumber: int}")]

public IActionResult GetAuthors ([FromQuery

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

        {

var data = authorRepository.GetAuthors (pageNumber);

návrat Ok (data);

        }

[HttpGet]

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

public IActionResult IsCreditCardValid

([FromHeader] string creditCardNumber)

        {

řetězec regexExpression =

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

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

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

Regex regex = nový Regex (regexExpression);

var match = regex.Match (creditCardNumber);

návrat Ok (match.Success);

        }

[HttpPost]

[Trasa („Výchozí / Vložit“)]

public IActionResult Insert ([FromBody] autor autor)

        {

návrat Ok (authorRepository.Save (autor));

        }

    }

Nakonec můžete také předat parametry prostřednictvím formuláře. Formulář se často používá, když chcete nahrát soubor. V tomto případě byste museli využít rozhraní IFormFile.

Jak dělat více v ASP.NET Core:

  • Jak používat analyzátory API v ASP.NET Core
  • Jak používat tokeny dat trasy v ASP.NET Core
  • Jak používat správu verzí API v ASP.NET Core
  • Jak používat objekty přenosu dat v ASP.NET Core 3.1
  • Jak zpracovat chyby 404 v ASP.NET Core MVC
  • Jak používat vkládání závislostí ve filtrech akcí v ASP.NET Core 3.1
  • Jak používat vzor možností v ASP.NET Core
  • Jak používat směrování koncových bodů v ASP.NET Core 3.0 MVC
  • Jak exportovat data do aplikace Excel v ASP.NET Core 3.0
  • Jak používat LoggerMessage v ASP.NET Core 3.0
  • Jak odesílat e-maily v ASP.NET Core
  • Jak protokolovat data na SQL Server v ASP.NET Core
  • Jak naplánovat úlohy pomocí Quartz.NET v ASP.NET Core
  • Jak vrátit data z webového rozhraní API ASP.NET Core
  • Jak formátovat data odpovědí v ASP.NET Core
  • Jak konzumovat webové rozhraní API ASP.NET Core pomocí RestSharp
  • Jak provádět asynchronní operace pomocí nástroje Dapper
  • Jak používat příznaky funkcí v ASP.NET Core
  • Jak používat atribut FromServices v ASP.NET Core
  • Jak pracovat s cookies v ASP.NET Core
  • Jak pracovat se statickými soubory v ASP.NET Core
  • Jak používat Middleware pro přepis adres URL v ASP.NET Core
  • Jak implementovat omezení rychlosti v ASP.NET Core
  • Jak používat Azure Application Insights v ASP.NET Core
  • Používání pokročilých funkcí NLog v ASP.NET Core
  • Jak zpracovat chyby v ASP.NET Web API
  • Jak implementovat globální zpracování výjimek v ASP.NET Core MVC
  • Jak zacházet s hodnotami null v ASP.NET Core MVC
  • Pokročilé správy verzí v ASP.NET Core Web API
  • Jak pracovat s pracovními službami v ASP.NET Core
  • Jak používat rozhraní Data Protection API v ASP.NET Core
  • Jak používat podmíněný middleware v ASP.NET Core
  • Jak pracovat se stavem relace v ASP.NET Core
  • Jak psát efektivní řadiče v ASP.NET Core