Προγραμματισμός

Πώς να μεταβιβάσετε παραμέτρους σε μεθόδους δράσης στο ASP.NET Core MVC

Το ASP.NET Core είναι ένα πλατφόρμα ανοιχτού κώδικα, λιτό, γρήγορο και αρθρωτό πλαίσιο για τη δημιουργία εφαρμογών Ιστού υψηλής απόδοσης. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να μεταβιβάσετε παραμέτρους σε μεθόδους δράσης στο ASP.NET Core MVC. Μπορείτε να τα μεταβιβάσετε μέσω μιας διεύθυνσης URL, μιας συμβολοσειράς ερωτήματος, μιας κεφαλίδας αιτήματος, ενός σώματος αιτήματος ή ακόμα και μιας φόρμας. Αυτό το άρθρο μιλά για όλους αυτούς τους τρόπους και τους απεικονίζει με παραδείγματα κώδικα.

Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο ASP.NET Core MVC στο Visual Studio 2019

Αρχικά, ας δημιουργήσουμε ένα έργο ASP.NET Core στο Visual Studio 2019. Ας υποθέσουμε ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο ASP.NET Core στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "ASP.NET Core Web Application" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου", καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Προαιρετικά επιλέξτε το πλαίσιο ελέγχου "Τοποθετήστε λύση και έργο στον ίδιο κατάλογο", ανάλογα με τις προτιμήσεις σας.
  7. Κάντε κλικ στο Δημιουργία.
  8. Στο παράθυρο "Δημιουργία νέας εφαρμογής Ιστού πυρήνα ASP.NET" που εμφανίζεται στη συνέχεια, επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 3.1 (ή μεταγενέστερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή.
  9. Επιλέξτε "Web Application (Model-View-Controller)" ως πρότυπο έργου για να δημιουργήσετε μια νέα εφαρμογή ASP.NET Core MVC.
  10. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα, καθώς δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  11. Βεβαιωθείτε ότι ο Έλεγχος ταυτότητας έχει οριστεί σε "Χωρίς έλεγχο ταυτότητας", καθώς ούτε θα χρησιμοποιούμε έλεγχο ταυτότητας.
  12. Κάντε κλικ στο Δημιουργία.

Ακολουθώντας αυτά τα βήματα θα πρέπει να δημιουργήσετε ένα νέο έργο ASP.NET Core MVC στο Visual Studio 2019. Θα χρησιμοποιήσουμε αυτό το έργο στις παρακάτω ενότητες για να απεικονίσουμε τις διάφορες μεθόδους μετάδοσης παραμέτρων σε μεθόδους δράσης στο ASP.NET Core 3.1.

Δημιουργήστε μια τάξη AuthorRepository στο ASP.NET Core MVC

Σε αυτό το παράδειγμα θα χρησιμοποιούμε μια κλάση αποθετηρίου - οι μέθοδοι δράσης στον ελεγκτή θα αλληλεπιδράσουν με τις μεθόδους της κλάσης αποθετηρίου για λειτουργίες CRUD. Θα δημιουργήσουμε πρώτα μια τάξη μοντέλου με το όνομα Author με ελάχιστες ιδιότητες για λόγους απλότητας, όπως φαίνεται στο απόσπασμα κώδικα που δίνεται παρακάτω.

  δημόσια τάξη Συγγραφέας

    {

δημόσιο int Id {get; σειρά; }

δημόσια συμβολοσειρά FirstName {get; σειρά; }

δημόσια συμβολοσειρά LastName {get; σειρά; }

    }

Η κλάση AuthorRepository περιέχει μεθόδους για την ανάκτηση παρουσιών της κλάσης Author από μια γενική λίστα, καθώς και για την προσθήκη νέων παρουσιών της κλάσης Author στη γενική λίστα. Η μέθοδος GetAuthors επιστρέφει μια σελίδα δεδομένων, ενώ ο αριθμός σελίδας μεταβιβάζεται σε αυτήν ως όρισμα.

  δημόσια τάξη AuthorRepository

    {

Συγγραφείς λίστας = νέα λίστα ()

        {

νέος συγγραφέας

            {

Αναγνωριστικό = 1,

Όνομα = "Joydip",

Επώνυμο = "Kanjilal"

            },

νέος συγγραφέας

            {

Αναγνωριστικό = 2,

Όνομα = "Steve",

Επώνυμο = "Smith"

            }

        };

δημόσιος συγγραφέας GetAuthor (int id)

        {

επιστροφή συγγραφέων.FirstOrDefault (a => a.Id == id);

        }

δημόσια λίστα GetAuthors (int pageNumber = 1)

        {

int pageSize = 10;

int skip = pageSize * (αριθμός σελίδας - 1);

εάν (συγγραφείς. Αριθμός <pageSize)

pageSize = author.Count;

επιστροφή συγγραφείς

. Παράλειψη (παράλειψη)

. Λήψη (pageSize) .ToList ();

        }

public bool Save (Συγγραφέας)

        {

var result = author.Where (a => a.Id == author.Id);

αν (αποτέλεσμα! = μηδέν)

            {

εάν (αποτέλεσμα. Αριθμός () == 0)

                {

συγγραφείς. Προσθήκη (συγγραφέας);

επιστροφή αληθινή?

                }

            }

επιστροφή ψευδής?

        }

    }

Περάστε τις παραμέτρους μέσω της διεύθυνσης URL στο ASP.NET Core MVC

Ένας από τους απλούστερους και ευκολότερους τρόπους για να μεταβιβάσετε παραμέτρους σε μια μέθοδο δράσης είναι να το μεταβιβάσετε μέσω της διεύθυνσης URL. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να μεταβιβάσετε παραμέτρους στη διεύθυνση URL.

[HttpGet]

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

δημόσια IActionResult GetAuthor (int authorId)

{

var data = authorRepository.GetAuthor (authorId);

Επιστροφή Προβολή (δεδομένα);

}

Η διεύθυνση URL για το τελικό σημείο είναι:

GET: // localhost: 8061 / Προεπιλογή / GetAuthor / 1

Περάστε τις παραμέτρους μέσω συμβολοσειράς ερωτήσεων στο ASP.NET Core MVC

Η παράδοση παραμέτρων στη συμβολοσειρά ερωτήματος είναι μια άλλη επιλογή. Δεν απαιτεί αλλαγή των πληροφοριών δρομολόγησης και ως εκ τούτου είναι συμβατή προς τα πίσω. Εξετάστε το ακόλουθο απόσπασμα κώδικα που δείχνει πώς μπορείτε να περάσετε παραμέτρους μέσω συμβολοσειρών ερωτημάτων σε μια μέθοδο δράσης.

[HttpGet]

[Διαδρομή ("Προεπιλογή / GetAuthors / {pageNumber: int}")]

δημόσιο IActionResult GetAuthors ([FromQuery

(Όνομα = "pageNumber")] int pageNumber = 1)

{

var data = authorRepository.GetAuthors (pageNumber);

επιστροφή ΟΚ (δεδομένα)

}

Ακολουθεί η διεύθυνση URL για πρόσβαση σε αυτό το τελικό σημείο:

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

Η μέθοδος GetAuthors δέχεται τον αριθμό σελίδας ως όρισμα που του αποστέλλεται μέσω συμβολοσειράς ερωτήματος. Σημειώστε ότι το pageNumber είναι μια προαιρετική παράμετρος - εάν καμία παράμετρος δεν μεταβιβάζεται σε αυτήν τη μέθοδο, τότε ο αριθμός της σελίδας θα ερμηνευτεί ως 1. Η μέθοδος επιστρέφει τις εγγραφές συγγραφέα για την καθορισμένη σελίδα. Στο παράδειγμά μας, εάν υπάρχουν 100 εγγραφές συγγραφέων στο χώρο αποθήκευσης δεδομένων και ο αριθμός σελίδας είναι 3, αυτή η μέθοδος θα επιστρέψει τις εγγραφές 31 έως 40. (Σημειώστε ότι ο αριθμός των συγγραφέων ανά σελίδα είναι κωδικοποιημένος · ορίζεται ως 10 στο Κατηγορία Συγγραφέας Αποθήκης.)

Περάστε τις παραμέτρους μέσω κεφαλίδας αιτήματος στο ASP.NET Core MVC

Η κεφαλίδα αιτήματος είναι μια ακόμη επιλογή για τη μετάδοση παραμέτρων στις μεθόδους δράσης σας. Μια συνήθης περίπτωση χρήσης για αυτό είναι η διαβίβαση διαπιστευτηρίων ή οποιωνδήποτε άλλων μυστικών δεδομένων μέσω του καλωδίου. Το παρακάτω απόσπασμα κώδικα απεικονίζει μια μέθοδο δράσης που αποδέχεται έναν αριθμό πιστωτικής κάρτας ως παράμετρο και επιστρέφει αληθής εάν ο αριθμός της πιστωτικής κάρτας είναι έγκυρος.

[HttpGet]

[Διαδρομή ("Default / IsCreditCardValid / {creditCardNumber}")]

δημόσια IActionResult IsCreditCardValid ([FromHeader] string creditCardNumber)

{

string regexExpression =

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

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

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

Regex regex = νέο Regex (regexExpression);

var match = regex.Match (creditCardNumber);

επιστροφή ΟΚ (match.Success);

}

Για λόγους απλότητας, η μέθοδος δράσης IsCreditCardValid επικυρώνει μόνο τις πιστωτικές κάρτες Visa, MasterCard και Amex. Μπορείτε να επεκτείνετε τη μέθοδο IsCreditCardValid για να επικυρώσετε άλλους τύπους καρτών. Επειδή ο αριθμός της πιστωτικής κάρτας πρέπει να περάσει με ασφάλεια, η χρήση της κεφαλίδας αιτήματος είναι μια καλή επιλογή εδώ. Το σχήμα 1 δείχνει πώς μπορείτε να καθορίσετε τον αριθμό της πιστωτικής σας κάρτας ως παράμετρο μέσω κεφαλίδας αιτήματος.

Περάστε τις παραμέτρους μέσω του body request στο ASP.NET Core MVC

Συχνά θα πρέπει να περάσετε παραμέτρους μέσω του σώματος αιτήματος όταν εκτελείτε εργασίες εισαγωγής ή ενημέρωσης. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να μεταβιβάσετε μια παρουσία της κλάσης Συγγραφέα μέσω του σώματος του αιτήματος.

[HttpPost]

[Διαδρομή ("Προεπιλογή / Εισαγωγή")]

δημόσια IActionResult Insert ([FromBody] Συγγραφέας συγγραφέας)

{

επιστροφή Ok (authorRepository.Save (author));

}

Το σχήμα 2 δείχνει πώς μπορείτε να καθορίσετε τα δεδομένα που θα εισαχθούν στο σώμα αιτήσεων.

Πλήρης πηγαίος κώδικας της κατηγορίας DefaultController

Ο πλήρης κωδικός της κλάσης DefaultController παρέχεται παρακάτω για την αναφορά σας.

 δημόσια τάξη DefaultController: Controller

    {

private readonly AuthorRepository authorRepository =

νέο AuthorRepository ();

[HttpGet]

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

δημόσια IActionResult GetAuthor (int authorId)

        {

var data = authorRepository.GetAuthor (authorId);

επιστροφή ΟΚ (δεδομένα)

        }

[HttpGet]

[Διαδρομή ("Προεπιλογή / GetAuthors / {pageNumber: int}")]

δημόσιο IActionResult GetAuthors ([FromQuery

(Όνομα = "pageNumber")] int pageNumber = 1)

        {

var data = authorRepository.GetAuthors (pageNumber);

επιστροφή ΟΚ (δεδομένα)

        }

[HttpGet]

[Διαδρομή ("Default / IsCreditCardValid / {creditCardNumber}")]

δημόσια IActionResult IsCreditCardValid

[[FromHeader] string creditCardNumber]

        {

string regexExpression =

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

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

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

Regex regex = νέο Regex (regexExpression);

var match = regex.Match (creditCardNumber);

επιστροφή ΟΚ (match.Success);

        }

[HttpPost]

[Διαδρομή ("Προεπιλογή / Εισαγωγή")]

δημόσια IActionResult Insert ([FromBody] Συγγραφέας συγγραφέας)

        {

επιστροφή Ok (authorRepository.Save (author));

        }

    }

Τέλος, μπορείτε επίσης να περάσετε παραμέτρους μέσω μιας φόρμας. Μια φόρμα χρησιμοποιείται συχνά όταν θέλετε να ανεβάσετε ένα αρχείο. Σε αυτήν την περίπτωση, θα πρέπει να επωφεληθείτε από τη διεπαφή IFormFile.

Πώς να κάνετε περισσότερα στο ASP.NET Core:

  • Τρόπος χρήσης των Αναλυτών API στο ASP.NET Core
  • Τρόπος χρήσης διακριτικών δεδομένων διαδρομής στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε την έκδοση API στο ASP.NET Core
  • Τρόπος χρήσης αντικειμένων μεταφοράς δεδομένων στο ASP.NET Core 3.1
  • Πώς να χειριστείτε 404 σφάλματα στο ASP.NET Core MVC
  • Πώς να χρησιμοποιήσετε την ένεση εξάρτησης σε φίλτρα δράσης στο ASP.NET Core 3.1
  • Πώς να χρησιμοποιήσετε το μοτίβο επιλογών στο ASP.NET Core
  • Τρόπος χρήσης δρομολόγησης τελικού σημείου στο ASP.NET Core 3.0 MVC
  • Τρόπος εξαγωγής δεδομένων στο Excel στο ASP.NET Core 3.0
  • Πώς να χρησιμοποιήσετε το LoggerMessage στο ASP.NET Core 3.0
  • Πώς να στείλετε email στο ASP.NET Core
  • Τρόπος καταγραφής δεδομένων σε SQL Server στον πυρήνα ASP.NET
  • Πώς να προγραμματίσετε εργασίες χρησιμοποιώντας το Quartz.NET στο ASP.NET Core
  • Πώς να επιστρέψετε δεδομένα από το ASP.NET Core Web API
  • Πώς να μορφοποιήσετε δεδομένα απόκρισης στο ASP.NET Core
  • Πώς να καταναλώσετε ένα ASP.NET Core Web API χρησιμοποιώντας το RestSharp
  • Πώς να εκτελέσετε λειτουργίες ασύγχυσης χρησιμοποιώντας το Dapper
  • Πώς να χρησιμοποιήσετε σημαίες χαρακτηριστικών στο ASP.NET Core
  • Τρόπος χρήσης του χαρακτηριστικού FromServices στο ASP.NET Core
  • Πώς να εργαστείτε με cookie στο ASP.NET Core
  • Πώς να εργαστείτε με στατικά αρχεία στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε το Middle Rewriting URL στο ASP.NET Core
  • Πώς να εφαρμόσετε περιορισμό ρυθμού στο ASP.NET Core
  • Πώς να χρησιμοποιήσετε το Azure Application Insights στο ASP.NET Core
  • Χρήση προηγμένων δυνατοτήτων NLog στο ASP.NET Core
  • Πώς να χειριστείτε σφάλματα στο ASP.NET Web API
  • Πώς να εφαρμόσετε τον παγκόσμιο χειρισμό εξαιρέσεων στο ASP.NET Core MVC
  • Τρόπος χειρισμού μηδενικών τιμών στο ASP.NET Core MVC
  • Προηγμένη έκδοση στο ASP.NET Core Web API
  • Πώς να εργαστείτε με υπηρεσίες εργαζομένων στο ASP.NET Core
  • Τρόπος χρήσης του API προστασίας δεδομένων στο ASP.NET Core
  • Τρόπος χρήσης μεσαίου λογισμικού υπό όρους στο ASP.NET Core
  • Τρόπος εργασίας με την κατάσταση συνεδρίας στον ASP.NET Core
  • Πώς να γράψετε αποτελεσματικούς ελεγκτές στο ASP.NET Core
$config[zx-auto] not found$config[zx-overlay] not found