2012-01-18 26 views
9

Khi một hình thức được đăng tải trong bộ điều khiển của tôi, tôi làm cho việc kiểm tra sau đây:Làm thế nào biết nếu ModelState chứa lỗi

if(ModelState.IsValid) 

Nếu mô hình này là không hợp lệ, lỗi được thêm vào ModelState. Sau đó, mô hình được chuyển đến chế độ xem với tóm tắt xác thực.

Tuy nhiên, tôi muốn kiểm tra xem ModelState có lỗi từ bên trong trình xử lý jQuery ready hay không, để tôi có thể thêm một số hành vi bổ sung nếu biểu mẫu có lỗi. Điều đó có thể không?

Trả lời

26

Bạn có thể nhổ javascript toàn cầu biến:

<script type="text/javascript"> 
    var isValid = @Html.Raw(Json.Encode(ViewData.ModelState.IsValid)); 
</script> 

và sau đó:

$(function() { 
    if (!isValid) { 
     alert('opa'); 
    } 
}); 
+1

Bạn có sử dụng nó? – gdoron

+1

@gdoron, điều đó sẽ phụ thuộc vào ngữ cảnh cụ thể và vấn đề chính xác mà tôi đang cố giải quyết. Vì OP không cung cấp bất kỳ ngữ cảnh nào tại sao anh ta cần phải biết liệu mô hình có hợp lệ trong trình xử lý document.ready không, tôi không thể trả lời câu hỏi của bạn cho dù tôi có sử dụng nó không vì tôi không có đủ thông tin. Vì vậy, như mọi khi câu trả lời là: nó phụ thuộc. –

+0

i jsut muốn nhận ý tưởng tnx @DarinDimitrov đã giúp rất nhiều –

2

một chút Ngoài @Dimitrov câu trả lời:

<script type="text/javascript"> 
    var isValid = '@Html.Raw(Json.Encode(ViewData.ModelState.IsValid))'; 

    if (isValid != 'true') 
     // model has some errors... 
</script> 

Điều quan trọng là phải sử dụng qoutes đơn xung quanh người trợ giúp. Nếu không, kết thúc dấu chấm phẩy ; sẽ gây ra sự cố. Nether bạn có thể viết nó, và bạn cũng không thể, trong mọi trường hợp nó gây ra lỗi cú pháp. Trừ khi bạn đặt những dấu nháy đơn xung quanh người trợ giúp như tôi đã đề cập.

0

Ngoài Darins Trả lời:

Trong .cshtml:

@Html.Hidden("IsValid", Json.Encode(ViewData.ModelState.IsValid)) 

trong JS

var isValid = $('#IsValid').val().toLowerCase() == "true"; 
Các vấn đề liên quan