Menyahpepijat "Tiada Pembina Tanpa Parameter Ditentukan" dalam ASP.NET MVC
Ralat "No Parameterless Constructor Defined for This Object" yang terkenal dalam ASP.NET MVC sering menunjukkan ketidakpadanan antara cara rangka kerja MVC anda cuba mencipta objek model dan cara model tersebut sebenarnya ditakrifkan. Mari terokai teknik penyelesaian masalah yang berkesan.
Memahami Punca Punca:
ASP.NET MVC, secara lalai, bergantung pada pembina tanpa parameter (pembina tanpa argumen) untuk membuat contoh objek model. Jika kelas model anda tidak mempunyai pembina tanpa parameter, rangka kerja tidak boleh membuat contoh, yang membawa kepada pengecualian ini.
Langkah Penyelesaian Masalah:
Peperiksaan Laluan dan Pengawal: Semak dengan teliti konfigurasi penghalaan dan tindakan pengawal anda. Pastikan laluan memetakan permintaan masuk dengan betul kepada tindakan pengawal yang sesuai dan tindakan ini mengendalikan penciptaan objek model dengan betul.
Analisis Tindanan Panggilan: Periksa tindanan panggilan pengecualian. Surih terperinci ini akan menentukan lokasi (kaedah) yang tepat di mana instantiasi objek model gagal. Ini biasanya berada dalam ControllerContext
atau ModelBindingContext
.
Pemeriksaan Pembina Model: Kemungkinan besar penyebabnya: semak sama ada kelas model anda tiada pembina tanpa parameter. Jika model anda memerlukan parameter untuk permulaan (cth., suntikan kebergantungan), rangka kerja MVC tidak akan dapat menciptanya tanpa menyediakan kebergantungan tersebut.
Faktor Tidak Relevan: Elakkan mengejar herring merah. Isu ini jarang berkaitan dengan perhimpunan luar seperti ASP.NET MVC Futures. Tumpukan pada penciptaan model teras dan mekanisme penghalaan.
Contoh Ilustrasi:
Kod berikut menggambarkan senario di mana kelas MyModel
tidak mempunyai pembina tanpa parameter:
<code class="language-csharp">public class MyController : Controller { public ActionResult MyAction(MyModel model) { // ... } } public class MyModel { public MyModel(IDataService dataService) // Requires a data service instance { // ... } }</code>
Di sini, rangka kerja MVC tidak boleh mencipta MyModel
kerana ia memerlukan contoh IDataService
. Penyelesaiannya adalah sama ada:
Tambah pembina tanpa parameter: Jika boleh, tambahkan pembina lalai pada MyModel
, walaupun ia hanya melakukan pemulaan minimum.
Gunakan Suntikan Ketergantungan: Laksanakan suntikan kebergantungan untuk memberikan contoh IDataService
kepada MyModel
. Ini adalah pendekatan pilihan untuk reka bentuk dan kebolehujian yang lebih baik.
Dengan menggunakan strategi ini secara sistematik, anda boleh mengenal pasti dan menyelesaikan ralat "No Parameterless Constructor Defined" dengan cekap, memastikan operasi lancar aplikasi ASP.NET MVC anda.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Tiada Pembina Tanpa Parameter Ditentukan untuk Objek Ini' dalam ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!