2011-12-09 40 views
9

Tôi đã thử sử dụng! Model.Any() nó không hoạt động, vì mô hình không có phần mở rộng. Giải quyết thế nào? Đây là đoạn mã của tôi.MVC3 Razor: cách kiểm tra xem model có trống không

@model MyModel.Work 
    @if (!Model.Any()) 
    { 
     <script type="text/javascript"> 
      alert("Model empty"); 
     </script> 
    } 
    else 
    { 
     <script type="text/javascript"> 
       alert("Model exists"); 
     </script> 
    } 

Trả lời

23

Nghe có vẻ với tôi như bạn đang instantiating mô hình, nhưng muốn kiểm tra và xem nếu nó được dân cư.

Cách làm tiêu chuẩn của tôi là tạo một tài sản bool gọi là Empty, chỉ nhận tiền và sau đó trả lại séc bạn cần xem nếu không có thuộc tính nào khác được đặt.

Giả sử bạn có một lớp khách hàng như mô hình của bạn:

public class Customer 
{ 
    public int CustomerId {get;set;} 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public string Email {get;set;} 

    public bool Empty 
    { 
     get { return (CustomerId == 0 && 
         string.IsNullOrWhiteSpace(FirstName) && 
         string.IsNullOrWhiteSpace(LastName) && 
         string.IsNullOrWhiteSpace(Email));   
      } 
    } 
} 

Bây giờ trong mô hình của bạn, bạn chỉ cần gọi:

@model MyModel.Work 
@if (Model.Empty) 
{ 
    <script type="text/javascript"> 
     alert("Model empty"); 
    </script> 
} 
else 
{ 
    <script type="text/javascript"> 
      alert("Model exists"); 
    </script> 
} 
+2

+1 đó là rất tốt đẹp –

+0

mccow002 .. đó là một gợi ý tuyệt vời! Cảm ơn nhiều! – MagB

+0

dòng tập lệnh đầu tiên cung cấp cảnh báo "Dự kiến"; "". –

9

thế nào về điều này:

if(Model == null) 
{ 
} 
+3

@if (Model == null) không hoạt động. – MagB

+1

thì mô hình của bạn không trống. Gỡ lỗi nó, xem tại sao nó không có sản phẩm nào. –

+6

Empty! = Null. Bộ sưu tập trống vẫn là một bộ sưu tập. –

9

Bạn có thể thử này:

@if (Model.Count == 0) 
{ 

} 
+0

@if (Model.Count() == 0) nó bị thiếu() sau khi Đếm – Eric

0

tôi có cùng một vấn đề. Tôi không biết nếu nó quan trọng, nhưng tôi sử dụng MVC5. Tôi quên gửi bất cứ thứ gì từ bộ điều khiển đến khung nhìn. Vì tôi đặt "return View (myList);" trong bộ điều khiển, phương thức .Any() hoạt động tốt.

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