Di mana saya dapat menemukan daftar kesalahan yang membuat ModelState tidak valid? Saya tidak melihat properti kesalahan apa pun pada objek ModelState.
120
Di mana saya dapat menemukan daftar kesalahan yang membuat ModelState tidak valid? Saya tidak melihat properti kesalahan apa pun pada objek ModelState.
Tentang "mungkinkah 0 kesalahan dan IsValid == false": inilah kode sumber MVC dari https://github.com/Microsoft/referencesource/blob/master/System.Web/ModelBinding/ModelStateDictionary.cs#L37-L41
public bool IsValid {
get {
return Values.All(modelState => modelState.Errors.Count == 0);
}
}
Sekarang, sepertinya tidak mungkin. Nah, itu untuk ASP.NET MVC v1.
Karena Anda mungkin memprogram di Visual studio, sebaiknya Anda memanfaatkan kemungkinan menggunakan breakpoint untuk langkah-langkah debugging yang mudah (mendapatkan gambaran apa masalahnya seperti dalam kasus Anda). Letakkan saja di depan / di tempat Anda memeriksa ModelState.isValid dan arahkan kursor ke ModelState. Sekarang Anda dapat dengan mudah menelusuri semua nilai di dalamnya dan melihat kesalahan apa yang menyebabkan pengembalian salah.
sumber
var asdf = ModelState.Values.Where(v => v.Errors.Count > 0);
dapat membantu AndaTempel kode di bawah ini di ActionResult pengontrol Anda dan tempatkan debugger pada titik ini.
sumber
atau iterasi dengan
sumber
Terkadang pengikat melontarkan pengecualian tanpa pesan kesalahan. Anda dapat mengambil pengecualian dengan cuplikan berikut untuk mencari tahu apa yang salah:
(Seringkali jika pengikat mencoba mengubah string menjadi tipe kompleks, dll.)
sumber
Jika Anda menghapus centang untuk ModelsState.IsValid dan membiarkannya error, jika Anda menyalin baris ini
((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
dan menempelkannya di bagian arloji di Visual Studio, itu akan memberi Anda persis apa kesalahannya. Menghemat banyak waktu untuk memeriksa letak kesalahan.sumber
Properti ModelState pada pengontrol sebenarnya adalah objek ModelStateDictionary. Anda dapat melakukan iterasi melalui kunci di kamus dan menggunakan metode IsValidField untuk memeriksa apakah bidang tertentu itu valid.
sumber
Seperti yang baru saja terjadi pada saya - ini juga dapat terjadi saat Anda menambahkan properti yang diperlukan ke model Anda tanpa memperbarui formulir Anda. Dalam hal ini ValidationSummary tidak akan mencantumkan pesan kesalahan.
sumber