Saya baru mengenal ASP MVC dan menggunakan tutorial Pengantar ASP MVC 4 Beta http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet -mvc-4
Saya mengalami kesalahan yang sepertinya tidak dapat saya temukan jawabannya dan saya juga tidak memiliki banyak pengalaman pemrograman sehingga saya tidak tahu harus mulai dari mana untuk memperbaikinya dan melanjutkan dengan tutorial. Saya menghargai bantuan apa pun yang dapat Anda berikan.
Saya di bagian Mengakses Data Model Anda dari Pengontrol dan saya mendapatkan kesalahan ini ketika saya mencoba membuat Film sebagai bagian dari tutorial, saya mengklik tautan "Buat Baru" dan saya mendapatkan kesalahan berikut
Bagian berikut telah ditentukan tetapi belum dirender untuk halaman tata letak> "~ / Views / Shared / _Layout.cshtml": "Scripts"
Daripada menggunakan Visual Studio express, saya memilih untuk mengunduh Visual Studio 2012 RC (tidak yakin apakah itu akan menjadi penyebab utama masalah saya.
Saya menyadari Anda mungkin meminta saya untuk memasukkan kode untuk menjawab ini tetapi saya tidak yakin kode apa yang harus disertakan. Mohon beri tahu kode apa yang Anda ingin saya sertakan jika ada dan saya akan dengan senang hati menambahkannya ke pertanyaan saya.
Terima kasih,
sumber
@section
yang TIDAK dirender dalam Tata Letak (denganRenderSection
). Ini bisa terjadi jika Anda salah mereferensikanLayout
, atau lupa mereferensikan tata letak sama sekali. Lihat jawaban @ vonvJawaban:
Ini berarti bahwa Anda telah menentukan bagian dalam Layout.cshtml master Anda, tetapi Anda belum menyertakan apa pun untuk bagian itu dalam Tampilan Anda.
Jika _Layout.cshtml Anda memiliki sesuatu seperti ini:
Kemudian semua Tampilan yang menggunakan Layout itu harus menyertakan a
@section
dengan nama yang sama (meskipun konten bagian kosong):Sebagai alternatif, Anda dapat menyetel wajib menjadi salah, lalu Anda tidak perlu menambahkan bagian di setiap Tampilan,
atau juga Anda bisa membungkusnya
@RenderSection
dalam satuif
blok,sumber
, required: false)
membuatnya@RenderSection("scripts", required: false)
akan memungkinkan untuk dimasukkan atau tidak.@RenderSection("scripts", required: false)
ke dalam _Layout.cshtml yang dihasilkan adalah solusi yang tepat. (Lihat pembahasan di bawah untuk mengetahui alasannya.) Dengan begitu, Anda dapat menambahkan perbaikan dalam satu file, tidak semua - perbaikan yang jauh lebih KERING.Selain itu, Anda dapat menambahkan baris berikut ke
_Layout.cshtml
atau_Layout.Mobile.cshtml
:sumber
Saya punya kasus dengan 3 level a'la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Meski melakukan seperti ini:
_MainLayout.cshtml
_Middle.cshtml
dan dalam definisi Page.cshtml
Saya masih mendapatkan kesalahan
Ternyata, kesalahannya adalah Middle.cshtml mengandalkan /Views/_ViewStart.cshtml untuk menyelesaikan tata letak induknya. Masalahnya diselesaikan dengan mendefinisikan ini di Middle.cshtml secara eksplisit:
Tidak dapat memutuskan apakah ini akan disengaja atau bug di MVC 4 - bagaimanapun, masalah telah terpecahkan :)
sumber
@section Foo {@RenderSection("Foo")}
untuk "meneruskan" bagian itu! Juga harus melewati tubuh dengan@RenderBody()
.Saya tidak yakin mengapa jawaban yang diterima diterima jika solusi yang disarankan tidak dan tidak menyelesaikan masalah. Sebenarnya ada dua masalah terkait yang terkait dengan topik ini.
Masalah 1
Halaman master (mis.
_Layout.cshtml
) Memiliki bagian yang ditentukan dan diperlukan, tetapi tampilan yang diwariskan tidak menerapkannya. Sebagai contoh,Template Tata Letak
Pandangan Mewarisi
Tidak perlu menampilkan kode apa pun, cukup pertimbangkan bahwa tidak ada implementasi
@section OptionBox {}
pada tampilan.Kesalahan untuk Masalah # 1
Section not defined: "OptionBox ".
Masalah # 2
Halaman master (misalnya
_Layout.cshtml
) memiliki bagian yang ditentukan dan diperlukan DAN tampilan yang diwariskan benar-benar menerapkannya. Namun, tampilan implementasi memilikiscript
bagian tambahan yang tidak ditentukan pada (salah satu) halaman masternya.Template Tata Letak
same as above
Pandangan Mewarisi
Kesalahan untuk Masalah # 2
The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"
Masalah OP mirip dengan Masalah # 2 dan jawaban yang diterima adalah untuk Masalah # 1.
sumber
Saya pikir solusi kami cukup berbeda dari orang lain jadi saya akan mendokumentasikannya di sini.
Kami telah menyiapkan tata letak Utama, tata letak perantara, dan kemudian merender halaman tindakan akhir. Main.cshtml <- Config.cshtml <- Action.cshtml
Hanya ketika web.config memiliki
customErrors='On/RemoteOnly'
kami mendapat kesalahan khusus dan tidak terkecuali atauApplication_Error
dipanggil. Saya bisa menangkap ini secaraLayout = null
online di Error.cshtml. Pengecualian seperti dalam pertanyaan, bagian skrip hilang.Kami telah menetapkannya di Main.cshtml (dengan diperlukan: false) dan Action.cshtml tidak memiliki apa pun yang ditulis ke bagian skrip.
Solusi adalah menambahkan
@section scripts { @RenderSection("scripts", false) }
Config.cshtml.sumber
Ini terjadi pada dasarnya ketika _Layout.cshtml tanpa:
atau dengan
TANPA
Jadi, Cukup tambahkan @RenderSection ("scripts", required: false) di _Layout.cshtml dan berfungsi khusus untuk developer yang bekerja dengan proyek genarasi Kendoui .
sumber
Tampaknya ada ketidakcocokan antara file Tampilan yang dibuat secara otomatis oleh beberapa versi Visual Studio untuk Anda saat Anda menggunakannya untuk membuat Model baru. Saya mengalami masalah ini menggunakan VS 2013 Community Edition baru dan berjalan melalui tutorial W3Schools di http://www.w3schools.com/aspnet/mvc_app.asp tetapi komentar di atas menunjukkan bahwa itu bukan masalah dengan petunjuk tutorial atau dengan versi tunggal VS.
Memang benar bahwa Anda dapat membuat pesan kesalahan pergi dengan hanya menghapus
@Scripts.Render("~/bundles/jqueryval")
baris dari tata letak buat / edit yang dibuat secara otomatis oleh Visual Studio.
Tetapi solusi itu tidak mengatasi akar masalah atau membuat Anda berada di tempat yang baik untuk melakukan lebih dari sekadar menyelesaikan tutorial. Pada titik tertentu (mungkin cukup awal) dalam pengembangan aplikasi nyata, Anda akan menginginkan akses ke kode validasi jquery yang dihapus oleh solusi komentar dari aplikasi Anda.
Jika Anda menggunakan VS untuk membuat model baru untuk Anda, itu juga membuat satu set lima file View: Buat, Hapus, Detail, Edit, dan Indeks. Dua dari tampilan ini, Buat dan Edit dimaksudkan untuk memungkinkan pengguna menambahkan / mengedit data untuk bidang dalam catatan database yang mendasari model. Untuk tampilan tersebut dalam aplikasi nyata, Anda mungkin ingin melakukan sejumlah validasi data menggunakan pustaka validasi jquery sebelum Anda menyimpan rekaman di db. Itulah mengapa VS menambahkan baris berikut
ke bagian bawah dari dua tampilan tersebut dan bukan yang lainnya. Kode yang dibuat secara otomatis mencoba membuat pustaka validasi tersedia untuk tampilan tersebut, tetapi tidak untuk yang lain.
Kesalahan terjadi karena VS tidak menambahkan baris terkait ke file _Layout.cshtml bersama atau, lihat satu jawaban di atas, menambahkannya tetapi membiarkannya dikomentari. Garis ini
@RenderSection("scripts", required: false)
Jika beberapa tampilan Anda memiliki bagian skrip (seperti yang dilakukan Buat dan Edit), harus ada perintah RenderSection yang disematkan di tata letak. Jika beberapa skrip memiliki bagian dan beberapa tidak (seperti Hapus, Detail, dan Indeks tidak), perintah RenderSection harus memiliki
required: false
parameter.Jadi solusi terbaik, jika Anda ingin melakukan sesuatu yang lebih dari sekadar menyelesaikan tutorial, adalah menambahkan pernyataan ke _Layout.cshtml bukan menghapus kode dari tampilan Edit dan Buat.
PS Ini sedikit membingungkan, di sini, bahwa apa yang diperlukan ada dalam 'bundel' dan pernyataan yang dibutuhkan sepertinya mencoba untuk memasukkan file dalam folder bundel yang tidak ada dalam proyek Anda. Namun, untuk build debug dan tutorial, itu tidak relevan karena file yang dibundel disertakan satu per satu. Lihat: http://www.asp.net/mvc/overview/performance/bundling-and-minification Kode yang dipermasalahkan di sini disebutkan secara singkat sekitar dua pertiga di bagian bawah halaman.
sumber
Saat bekerja melalui Tutorial ASP.NET MVC 4 dengan Visual Studio 2012 saya mengalami kesalahan yang sama di "Mengakses Data Model Anda dari bagian Controller". Cara mengatasinya cukup sederhana.
Saat membuat Aplikasi Web ASP.NET MVC 4 baru di Visual Studio 2012 dalam dokumen _Layout.cshtml di folder bersama, bagian "skrip" diberi komentar.
Cukup hapus komentar pada baris tersebut dan kode sampel akan berfungsi.
sumber
Saya memiliki masalah yang sama saat menerapkan tutorial untuk pemula MVC. Saya mendapat berbagai saran untuk memodifikasi @RenderSection di file layout.cshtml Anda tetapi saya belum menggunakannya.
Saya telah banyak mencari dan kemudian saya menemukan bahwa tag skrip yang dihasilkan di (View / Edit.cshtml) dan file cshtml lainnya tidak dirender
} **
Jadi saya menghapus baris tersebut dan aplikasi mulai berjalan dengan lancar.
sumber
Saya juga berkomentar ** @ bagian Skrip daripada itu berjalan lancar. :)
sumber
Saya mencari kesalahan di web dan membuka halaman ini. Saya menggunakan Visual Studio 2015 dan ini adalah proyek MVC pertama saya.
Jika Anda melewatkan simbol @ sebelum bagian render, Anda akan mendapatkan kesalahan yang sama. Saya ingin membagikan ini untuk pemula yang akan datang.
sumber
Saya merasa bahwa Anda merender bagian Anda dari dalam bagian @ di file _Layout yang merujuk ke tampilan parsial dengan bagian @, yaitu Anda telah menumpuk @ bagian dalam bagian @. Di file _Layout, hapus @section di sekitar bagian render.
sumber
Saya memecahkan masalah ini dengan menggunakan yang berikut,
sumber
Bagi saya masalahnya ada di _Layout.cshtml saya, saya memiliki RenderSection di dalam suatu kondisi
dan dalam pandangan anak saya itu tanpa syarat
Jadi terlepas dari temanya, anak menambahkan Footer. Tetapi pada induk ketika temanya bukan Merah atau Hijau, itu tidak menambahkan Footer dan pengecualian tanpa tangan dilemparkan.
sumber
periksa speling dan huruf besar / kecil dari istilah ""
kapan pun kita menulis @RenderSection ("name", required: false) pastikan bahwa tampilan pisau cukur Berisi bagian @ nama bagian {} jadi periksa ejaan dan huruf besar / kecil dari istilah "" Benar dalam hal ini adalah "Skrip"
sumber
Harap pastikan Anda telah mengetik dengan benar ejaan menggunakan bagian script pada tampilan
yang benar adalah
jika Anda mengetik
@section script{ //your script here}
ini salah.sumber