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"); }Μόνο επειδή η σύνταξη είναι ευκολότερη και είναι πιο ευανάγνωστη. Εκτός από αυτό, δεν φαίνεται να υπάρχουν διαφορές όσον αφορά τη λειτουργικότητα.
|