Saya ingin mendapatkan semua pesan kesalahan dari modelState tanpa mengetahui nilai-nilai kunci. Looping through untuk mengambil semua pesan kesalahan yang berisi ModelState.
Bagaimana saya bisa melakukan ini?
asp.net-mvc
modelstate
chobo2
sumber
sumber
@Html.ValidationSummary()
adalah cara cepat untuk menampilkan semuanya dengan pisau cukur.foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors)) { DoSomething(error); }
Jawaban:
Lihat juga Bagaimana saya mendapatkan koleksi Model State Errors di ASP.NET MVC? .
sumber
Value.ErrorMessage
dan sebagai gantinyaValue.Exception.Message
foreach (KeyValuePair<string, ModelState> kvp in htmlHelper.ViewData.ModelState) {
dan masukkan baris di bawahnya ini:var modelState = kvp.Value;
. Anda bisa mendapatkan kunci darikvp.Key
Menggunakan LINQ :
sumber
List<string> errors = new List<string>()
bukannyavar errors = new List<string>()
benar-benar buang-buang waktu, tetapi menulisIEnumerable<ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);
, di mana jenis kembali tidak terlalu jelas, benar-benar lebih besar dalam hal keterbacaan. (Bahkan jika visual studio dapat memberikannya kepada Anda di mouse)Bangunan di atas LINQ verison, jika Anda ingin menggabungkan semua pesan kesalahan menjadi satu string:
sumber
Saya bisa melakukan ini menggunakan LINQ kecil,
Metode di atas mengembalikan daftar kesalahan validasi.
Bacaan lebih lanjut :
Cara membaca semua kesalahan dari ModelState di ASP.NET MVC
sumber
Selama debugging, saya merasa berguna untuk meletakkan tabel di bagian bawah setiap halaman saya untuk menunjukkan semua kesalahan ModelState.
sumber
Seperti yang saya temukan setelah mengikuti saran dalam jawaban yang diberikan sejauh ini, Anda bisa mendapatkan pengecualian yang terjadi tanpa pesan kesalahan yang ditetapkan, jadi untuk menangkap semua masalah Anda benar-benar perlu mendapatkan ErrorMessage dan Exception.
atau sebagai metode ekstensi
sumber
Jika ada yang ingin mengembalikan properti Model of Name untuk mengikat pesan kesalahan dalam tampilan yang diketik dengan kuat.
Dengan cara ini Anda bisa mengikat kesalahan dengan bidang yang melempar kesalahan.
sumber
Mengeluarkan hanya pesan kesalahan itu sendiri tidak cukup untuk saya, tetapi ini berhasil.
sumber
Untuk berjaga-jaga jika seseorang membutuhkannya saya membuat dan menggunakan kelas statis berikut dalam proyek saya
Contoh penggunaan:
Usings:
Kelas:
sumber
Dan ini juga bekerja:
sumber
SelectMany
tersedia.Berguna untuk meneruskan berbagai pesan kesalahan ke Lihat, mungkin melalui Json:
sumber
Ini memperluas jawaban dari @Dunc. Lihat komentar doc xml
sumber
Selain itu,
ModelState.Values.ErrorMessage
mungkin kosong, tetapiModelState.Values.Exception.Message
mungkin mengindikasikan kesalahan.sumber
Dalam implementasi Anda Anda kehilangan Kelas statis, ini seharusnya.
agak
sumber
cukup gunakan Tag-tag penolong validasi-ringkasan
sumber