Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 13486|Απάντηση: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 19/7/2015 11:37:53 μ.μ. | | |
1. Απόδοση σώματος
Στη μηχανή Razor, δεν υπάρχει "κύρια σελίδα", αντίθετα μια σελίδα που ονομάζεται "διάταξη" (_Layout.cshtml) τοποθετείται στον φάκελο κοινόχρηστης προβολής. Σε αυτήν τη σελίδα, θα δείτε μια δήλωση στην ετικέτα:
@RenderBody()
Στην πραγματικότητα, λειτουργεί παρόμοια με το στοιχείο ελέγχου διακομιστή στην κύρια σελίδα, όταν δημιουργείται μια προβολή που βασίζεται σε αυτήν τη σελίδα διάταξης, τα περιεχόμενα της προβολής συγχωνεύονται με τη σελίδα διάταξης και το περιεχόμενο της προβολής που δημιουργήθηκε πρόσφατα αποδίδεται μεταξύ των ετικετών μέσω της μεθόδου @RenderBody() της σελίδας διάταξης.
Αυτή η μέθοδος δεν απαιτεί παραμέτρους και μπορεί να εμφανιστεί μόνο μία φορά.
2. Απόδοση σελίδας
Όπως μπορείτε να μαντέψετε από το όνομα, αυτή η μέθοδος είναι η παρουσίαση μιας σελίδας. Για παράδειγμα, η σταθερή κεφαλίδα σε μια ιστοσελίδα μπορεί να τοποθετηθεί ξεχωριστά σε ένα αρχείο κοινόχρηστης προβολής και, στη συνέχεια, να κληθεί με αυτήν τη μέθοδο στη σελίδα διάταξης, ως εξής:
@RenderPage("~/Views/Shared/_Header.cshtml")
Με παραμέτρους
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="εσείς")
Καλέστε τη σελίδα για να λάβετε τις παραμέτρους:
Λάβετε τις παραμέτρους που μεταβιβάζονται από το RenderPage().
@PageData["param"]
3. ΑπόδοσηΕνότητα
Η σελίδα διάταξης έχει επίσης την έννοια της ενότητας, δηλαδή, εάν μια ενότητα ορίζεται σε ένα πρότυπο προβολής, μπορεί να παρουσιαστεί ξεχωριστά με τον ακόλουθο τρόπο:
@RenderPage("~/Views/Shared/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection("κεφάλι")
Φυσικά, ορίστε επίσης την ενότητα στην προβολή, διαφορετικά θα προκύψει εξαίρεση:
@section κεφάλι{
//do
}
Για να αποτρέψετε εξαιρέσεις λόγω ελλείψεων ενοτήτων, μπορείτε να δώσετε στην RenderSection() ένα δεύτερο όρισμα:
@RenderSection("Υπομενού", false)
ή
@if (IsSectionDefined("Υπομενού"))
{
@RenderSection("Υπομενού", false)
}
αλλιώς
{
<p>Η ενότητα υπομενού δεν έχει οριστεί!</p>
}
4.@Html.Partial
Το Partial δημιουργεί τη δική του παρουσία του TextWriter κάθε φορά και αποθηκεύει προσωρινά το περιεχόμενο στη μνήμη. Τέλος, στείλτε όλη την έξοδο εγγραφής σε ένα αντικείμενο MvcString
Τις περισσότερες φορές, θα χρησιμοποιήσουμε @{ html.RenderPartial("λεπτομέρειες"); αντί για @Html.Μερική
Η διαφορά μεταξύ RenderPage() και RenderPartial().
Οι κλήσεις RenderPage() μπορούν να το χρησιμοποιήσουν μόνο για να περάσουν προηγούμενα δεδομένα.
Η RenderPartial() μπορεί να χρησιμοποιήσει δεδομένα προβολής, μοντέλο και άλλα δεδομένα.
Η διαφορά μεταξύ Html.RenderPartial και Html.RenderAction
Το Html.RenderPartial είναι κατάλληλο για επαναλαμβανόμενα UserControls και χρειάζεται να χρησιμοποιηθεί μόνο για την απόδοση περιεχομένου μέσω μοντέλων ή για UserControls για διαφημίσεις. Το Html.RenderAction θα καλέσει πρώτα τη μέθοδο Controller 's Action, εάν αυτός ο UserControl χρειάζεται να λάβει δεδομένα από τη βάση δεδομένων για απόδοση (διαβάστε τη βάση δεδομένων μέσω της Ενέργειας), αυτή η μέθοδος είναι πιο κατάλληλη για αυτήν τη φορά.
5.Html.Partial("MyView")
Επιστρέψτε μια ροή προσπάθειας ως MvcHtmlString, ακολουθώντας τους τυπικούς κανόνες δρομολόγησης.
Αποδίδει την προβολή "MyView" σε μια συμβολοσειρά MvcHtml. Ακολουθεί τους τυπικούς κανόνες για την αναζήτηση προβολής (π.χ. ελέγξτε τον τρέχοντα κατάλογο και, στη συνέχεια, ελέγξτε τον κοινόχρηστο κατάλογο).
Html.RenderPartial("MyView")

Παρόμοια με την Html.Partial(), η διαφορά είναι ότι πληκτρολογείται απευθείας στη σελίδα χωρίς προσωρινή αποθήκευση. Κάνει το ίδιο με την Html.Partial(), εκτός από το ότι γράφει την έξοδο της απευθείας στη ροή απόκρισης. Αυτό είναι πιο αποτελεσματικό, επειδή το περιεχόμενο της προβολής δεν αποθηκεύεται προσωρινά στη μνήμη. Ωστόσο, επειδή η μέθοδος δεν επιστρέφει κανένα αποτέλεσμα, το @Html.RenderPartial("MyView") δεν θα λειτουργήσει. Πρέπει να τυλίξετε την κλήση σε ένα μπλοκ κώδικα: @{Html.RenderPartial("MyView"); }.
RenderPage("MyView.cshtml")

Επιστρέφει μια ειδική προβολή με διαδρομές, ονόματα αρχείων κ.λπ., και εξάγει απευθείας όπως Heml.RenderPartial() χωρίς προσωρινή αποθήκευση. Οι μεταβλητές του μοντέλου μπορούν να περάσουν. Αποδίδει την καθορισμένη προβολή (που προσδιορίζεται από τη διαδρομή και το όνομα αρχείου και όχι από το όνομα της προβολής) απευθείας στη ροή απόκρισης, όπως η Html.RenderPartial(). Μπορείτε να παρέχετε οποιοδήποτε μοντέλο θέλετε στην προβολή συμπεριλαμβάνοντάς το ως δεύτερη παράμετρο
RenderPage("MyView.cshtml",MyModel)

Προτιμώ
@RenderPage("_LayoutHeader.cshtml")Πάνω από
@{Html.RenderPartial("_LayoutHeader"); }Μόνο επειδή η σύνταξη είναι ευκολότερη και είναι πιο ευανάγνωστη. Εκτός από αυτό, δεν φαίνεται να υπάρχουν διαφορές όσον αφορά τη λειτουργικότητα.





Προηγούμενος:ASP.NET---- εφαρμόσετε ένα κουμπί κλικ ή έναν σύνδεσμο για να εμφανιστεί το παράθυρο διαλόγου σύνδεσης
Επόμενος:Ορίστε το CheckBoxList ώστε να μην αναδιπλώνει τη γραμμή
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com