2009-10-07 34 views
9

Html.ValidationSummary() vẫn đang được hiển thị ngay cả khi trạng thái mô hình hợp lệ.ASP.Net MVC: Chỉ hiển thị Html.ValidationSummary nếu có lỗi

Ví dụ này không hoạt động:

<% if (!this.ViewData.ModelState.IsValid) 
{ %> 
<%= Html.ValidationSummary()%> 
<% } %> 

Hiện vẫn còn là một sản phẩm nào 'ul' thẻ bị trả lại. Làm cách nào để làm cho nó hiển thị chỉ nếu ModelState không hợp lệ?

EDIT Tắt ModelState thực sự không hợp lệ, nhưng mã của tôi không thêm bất kỳ thông báo lỗi nào, nó không hợp lệ vì không có lý do rõ ràng.

[AcceptVerbs("POST")] 
public ActionResult Login(string username, string password, bool? remember) 
    { 
     if (string.IsNullOrEmpty(username)) 
     { 
      ModelState.AddModelError("Username", "Username is required"); 
     } 
     if (string.IsNullOrEmpty(password)) 
     { 
      ModelState.AddModelError("Password", "Password is required"); 
     } 

     if (ModelState.IsValid) 
     { 
      ; // this point is never reached 
     } 

     return View(); 
    } 

Trả lời

6

Nếu thông tin bạn cung cấp chính xác thì this.ViewData.ModelState.IsValid chắc chắn là sai. Phải có mã khác ở đây mà bạn không cung cấp.

2

source code nói rằng khi trạng thái mô hình hợp lệ, trình trợ giúp trả về một chuỗi rỗng. Tôi nghi ngờ rằng trạng thái mô hình của bạn thực sự không hợp lệ nhưng chưa có thông báo nào được thêm vào. Hoặc, nó có thể là đánh dấu là thực sự đến từ một cái gì đó khác trên trang của bạn - thậm chí có thể thêm với javascript.

1

Kiểm tra ClientValidationEnabledUnobtrusiveJavaScriptEnabled trong cài đặt ứng dụng. Tắt các tính năng này nếu chúng không được sử dụng có thể khắc phục vấn đề này.

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