2009-04-07 39 views
6

Tôi đã có một mô hình mà hiện một số kiểm tra xác nhận và cho biết thêm các lỗi để ModelState:Set tập trung vào về lỗi mô hình ASP.NET MVC

ViewData.ModelState.AddModelError("mycontrol", "message") 

Họ hiển thị tốt trên các mặt xem, nhưng là có một cách đặt tiêu điểm cho điều khiển tương ứng với thông báo xác thực? Ngay bây giờ, trang làm mới và ở lại đầu trang, vì vậy nếu lỗi ở cuối trang, điều đó không hiển nhiên đối với người dùng điều gì đã xảy ra.

Lưu ý: Một giải pháp khác sẽ là để ValidationSummary hiển thị danh sách lỗi ở đầu trang, nhưng tôi chưa bao giờ có thể hiển thị lỗi đó để hiển thị bất kỳ thứ gì. Tất cả các lỗi của tôi được hiển thị thông qua ValidationMessage.

Chỉnh sửa: Tôi đã tìm thấy sự cố của mình với ValidationSummary. Đánh dấu tôi đã có được:

<% Html.ValidationSummary()%> 

mà cần phải có được:

<%=Html.ValidationSummary()%> 

tôi vẫn muốn biết làm thế nào để snap vào lĩnh vực này với các lỗi tuy nhiên.

+0

Xác thực Tóm tắt sẽ hoạt động. Nó cho tôi. Bạn có thể cho chúng tôi thấy một số đánh dấu của bạn (có lẽ đơn giản hóa bằng cách bỏ qua html tĩnh)? Tiện ích mở rộng HtmlHelper xem xét cùng trạng thái mô hình để hiển thị lỗi. – tvanfosson

+0

Tôi nhận được nửa chừng gửi mẫu mã của mình khi tôi nhận thấy dấu "=" bị thiếu trong đánh dấu (và đặt lòng bàn tay mở lên trán). – gfrizzle

Trả lời

24

Một số điều tốt đẹp để cuộn đến đầu vào đầu tiên có lỗi. Bit phức tạp là bạn phải lấy phần tử DOM bên dưới TRƯỚC KHI bạn gọi focus() làm phương thức focus() trên đối tượng jQuery kích hoạt sự kiện lấy nét thay vì tập trung vào phần tử.

<script type='text/javascript'> 
    $(document).ready(function() 
    { 
     var input = $('.input-validation-error:first'); 

     if(input) 
     { 
      input.focus(); 
     } 
    }); 
</script> 
+0

Giải pháp tốt. Tôi chỉ cần thêm "return false" để làm cho nó hoạt động. nếu (đầu vào) { input.focus(); trả về false; } –

+0

@ HallgeirEngen thực sự không cần thiết. Tất cả nó sẽ làm là hủy bỏ việc thực hiện xử lý sẵn sàng. Nếu bạn có bất kỳ mã nào sau đó, nó sẽ không được thực hiện. – tvanfosson

1

Bạn có thể sử dụng JavaScript để tìm các yếu tố đầu vào trên trang có lớp HTML xác thực MVC (nhập-xác thực-lỗi) được thêm vào và di chuyển carat sang giá trị đầu tiên. Điều đó/nên/di chuyển màn hình đến phần tử đó mặc dù tôi chưa thử nghiệm nó.

Thư viện JS như jQuery sẽ làm cho việc này trở nên đơn giản.

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