Untuk aplikasi ASP.NET MVC, saya melihat artikel blog ini . Penulis ScottGu menambahkan @section
ke Index.cshtml.
Saya punya beberapa pertanyaan (merujuk pada artikel di atas):
- Apakah Index.cshtml Tampilan bersama?
- Kode contoh menggunakan
@section
kode dalam tampilan tertentu. Mengapa?
Dapatkah seseorang tolong jelaskan mengapa dan kapan saya akan menggunakan @section
dalam Tampilan?
asp.net-mvc
A Bogus
sumber
sumber
Jawaban:
@section
adalah untuk mendefinisikan konten yang diganti dari tampilan bersama. Pada dasarnya, ini adalah cara bagi Anda untuk menyesuaikan tampilan bersama Anda (mirip dengan Halaman Master dalam Formulir Web).Anda mungkin menemukan Scott Gu menulis tentang ini sangat menarik .
Sunting: Berdasarkan pada klarifikasi pertanyaan tambahan
The
@RenderSection
sintaks masuk ke Shared View, seperti:Ini kemudian akan ditempatkan dalam tampilan Anda dengan
@Section
sintaks:Di MVC3 + Anda dapat menentukan file Layout yang akan digunakan untuk tampilan secara langsung atau Anda dapat memiliki tampilan default untuk semua tampilan.
Pengaturan tampilan umum dapat diatur dalam _ViewStart.cshtml yang mendefinisikan tampilan tata letak default yang mirip dengan ini:
Anda juga dapat mengatur Tampilan Bersama untuk digunakan secara langsung dalam file, seperti index.cshtml secara langsung seperti yang ditunjukkan dalam cuplikan ini.
Ada berbagai cara Anda dapat menyesuaikan pengaturan ini dengan beberapa lagi yang disebutkan dalam jawaban SO ini .
sumber
Contoh yang baik adalah Javascript. Anda ingin ini berada di bagian bawah halaman yang dirender di browser karena ini adalah praktik terbaik.
Bagaimana Anda melakukan ini dari Tampilan berdasarkan Layout / Masterpage di mana Anda hanya dapat mengakses bagian tengah halaman?
Anda melakukan ini dengan mendeklarasikan bagian Script di bagian bawah halaman Layout. Kemudian Anda dapat menambahkan konten, dalam hal ini Javascript termasuk (saya harap!), Dari halaman Tampilan Anda ke bagian bawah halaman tata letak Anda.
sumber
Anda ingin menggunakan bagian ketika Anda ingin sedikit kode / konten untuk di-render di placeholder yang telah ditentukan di halaman tata letak.
Dalam contoh spesifik yang Anda tautkan, ia telah menetapkan RenderSection di _Layout.cshtml. Setiap tampilan yang menggunakan tata letak itu dapat menentukan bagian @ dengan nama yang sama seperti yang didefinisikan dalam Tata Letak, dan itu akan menggantikan panggilan RenderSection di tata letak.
Mungkin Anda bertanya-tanya bagaimana kita tahu Index.cshtml menggunakan tata letak itu? Ini karena sedikit konvensi MVC / Razor. Jika Anda melihat dialog di mana dia menambahkan tampilan, kotak "Gunakan tata letak atau halaman master" dicentang, dan tepat di bawahnya tertulis "Biarkan kosong jika diatur dalam file _viewstart Razor". Itu tidak ditampilkan, tetapi di dalam file _ViewStart.cshtml itu adalah kode seperti:
Cara kerja viewstarts adalah file cshtml apa pun dalam direktori atau direktori anak yang sama akan menjalankan ViewStart sebelum dijalankan sendiri.
Itulah yang memberitahu kita bahwa Index.cshtml menggunakan Shared / _Layout.cshtml.
sumber
Ini memungkinkan Anda menentukan
@Section
kode dalam templat yang kemudian dapat Anda sertakan dalam file lain. Misalnya, bilah sisi yang ditentukan dalam templat, dapat dirujuk dalam tampilan lain yang disertakan.Semoga ini membantu.
sumber