2009-03-26 37 views

Trả lời

36

Nhìn vào asp.net mvc source code, thuộc tính IsValid trên ModelStateDictionary chỉ đơn giản là trả về true hoặc false tùy thuộc vào việc có bất kỳ lỗi nào trong Modelollate ICollection được giữ trong thuộc tính Values ​​hay không.

Bạn sẽ có thể tìm thấy bất kỳ sai sót bao gồm cả tin nhắn và ngoại lệ như thế này:

foreach(var modelStateValue in ViewData.ModelState.Values) 
{ 
    foreach(var error in modelStateValue.Errors) 
    { 
     // Do something useful with these properties 
     var errorMessage = error.ErrorMessage; 
     var exception = error.Exception; 
    } 
} 
+0

Điều này thật tuyệt vời! +1 – TheOptimusPrimus

4

Tôi đã chạy qua một vấn đề tương tự và sử dụng cùng một loại thói quen mà Steve cung cấp, tìm thấy một ngoại lệ đã được ném (không đúng) một nơi nào đó bên trong các chất kết dính mô hình mặc định mà không thực hiện theo cách của mình vào Html.ValidationSummary.

Vấn đề đặc biệt là tôi có một hộp kéo thả có tùy chọn "Có" hoặc "Không", với các giá trị "1" và "0" (thay vì "true" và "false") và Model Binder bị nghẹn khi cố gắng chuyển đổi chúng thành một boolean (thành viên của thực thể tôi mong đợi), nói rằng 0 không phải là một giá trị hợp lệ cho Boolean.

Tôi đã hy vọng rằng một thông điệp tốt đẹp sẽ được sản xuất cho biết lựa chọn của tôi không hợp lệ, nhưng thay vào đó tôi đã được xử lý cho một ValidationSummary trống. Có vẻ như ngoại lệ đã bị nuốt chửng! (và bây giờ là một cái gì đó tôi sẽ được tìm ra trong tương lai.) Điều này có lẽ nên được nộp với MS như là một lỗi?

+0

Bạn có câu trả lời về điều này không? –

+0

Đây là một vài năm trước, và tôi nhớ lại vấn đề nhưng không chắc tôi nhớ lại câu trả lời. Tôi tin rằng tôi có thể đã kết thúc bằng văn bản một số mã trường hợp đặc biệt để thực hiện xác nhận của riêng tôi, không dựa vào chất kết dính mô hình mặc định nữa cho việc này. (Nghĩa là, hãy kiểm tra Request.Form trực tiếp để tự mình phát hiện ra bất kỳ lỗi nào, giả sử ValidationSummary không phải lúc nào cũng hữu ích.) Điều này đã trở lại MVC 2, không chắc liệu nó vẫn còn theo cách này trong v4? – Funka

Các vấn đề liên quan