2012-12-19 14 views
7

Tôi đang làm việc trên MVC-3. Tôi đang phải đối mặt với ngoại lệ sau đây trên quan điểm của tôi:Ngoại lệ trong chế độ xem MVC - 3 không thể thực hiện ràng buộc thời gian chạy trên tham chiếu null

cannot perform runtime binding on a null reference 

lớp mẫu

public class HomeModel 
    { 
     public IEnumerable<Html> Template { get; set; } 
    } 

Xem mã

@model Project.Models.HomeModel 

    @{ 
     ViewBag.Title = "Home Page"; 
     int i = 0; 
    } 
    <div class="container"> 
      @foreach (var e in Model.Template) //getting exception on this foreach loop 
      { 
       //loop content  
      } 
    </div> 

khiển

public ActionResult Index() 
{ 
    HomeModel model = new HomeModel(); 

    model.Template = db.Templates(); 

    return View(model); 
} 

Chế độ xem của tôi được nhập mạnh vào lớp mô hình HomeModel. Bất cứ ai có thể vui lòng giúp tôi giải quyết vấn đề này?

+0

db.Templates là gì? Khác với null, đó là. –

+0

Bạn có thể gỡ lỗi và kiểm tra giá trị của db.Templates() đối với hành động Chỉ mục của bạn không? –

+0

có và giá trị này không phải là rỗng – user1740381

Trả lời

8

Điều này là do thực thi LINQ bị trì hoãn. Các kết quả của Model.Template không được tính cho đến khi bạn cố gắng truy cập chúng và trong trường hợp này db.Template nằm ngoài phạm vi xem. Bạn có thể làm điều đó bằng cách sử dụng ToList() đến ToArray()ToDictionary() với db.Templates.

đang Kiểm Soát Tài Chính của bạn sẽ giống như thế:

public ActionResult Index() 
{ 
    HomeModel model = new HomeModel(); 

    model.Template = db.Templates.ToList(); 

    return View(model); 
} 
Các vấn đề liên quan