2013-07-30 20 views
6

Tôi mới đến asp.net mvc4 và có cái gì đó tôi không hiểu rõ.Tuyên bố của mô hình trong Razor Xem trong mvc4 asp.net

Tại sao tôi phải khai báo Mô hình bằng cách sử dụng @model ở trên cùng của chế độ xem, nếu tôi đã chuyển một đối tượng cho Chế độ xem trong bộ điều khiển.

Lấy một ví dụ:

Bộ điều khiển:

public ActionResult countryDetails(int id) 
    { 

     Country country = db.Country.Find(id); 
     return View(country); 

    } 

Xem:

@model MvcApplication2.Models.Country 
@{ 
    ViewBag.Title = "countryDetails"; 
} 
... 

Bộ điều khiển trả về một View với một đối tượng như tham số, vì vậy mô hình nên được đã được biết đến. Tôi xin lỗi nếu nó là hiển nhiên, nhưng tôi không thể hiểu tại sao đây không phải là một tuyên bố "đôi".

Cảm ơn sự giúp đỡ của bạn!

Trả lời

1

Lý do chính là loại an toàn, nó cho phép bạn làm việc với quan điểm mạnh mẽ gõ với lợi ích của IntelliSense, gợi ý biên dịch lỗi, không hợp lệ đúc, vv

Ngoài ra, một lý do khác là để có thể đọc - nó hoạt động như một lời nhắc nhở cho những gì sắp xếp của mô hình nó là bạn đang thực sự đối phó với thay vì phải tiếp tục giới thiệu trở lại bộ điều khiển.

6

Việc kê khai ở phía trên sẽ làm hai việc cho bạn:

  • Nó sẽ cho phép intellisence biết những gì loại bạn đang sử dụng khi bạn gõ vào @Model hoặc sử dụng bất kỳ các phần mở rộng helper Html.

  • Nó cũng sẽ kiểm tra thời gian chạy mà mô hình được truyền vào có thể được truyền tới loại chế độ xem mong đợi.

Không nhất thiết phải là "tuyên bố kép" vì nó tương tự như việc chỉ định loại cho tham số trên phương thức. Giống như rất

Person Someone = new Person(); 
RenderView(Someone); 
... 
void RenderView(Person model) { } 
+0

Cảm ơn câu trả lời của bạn. Tôi đã nhận nó ngay bây giờ :) – Pierrito

2

Theo mặc định tầm nhìn của bạn được thừa hưởng từ System.Web.Mvc.WebViewPage<TModel>

Bạn có thể tùy chọn ghi đè lên lớp này, đó là mặc định cơ chế ASP.NET thừa kế:

@inherits System.Web.Mvc.WebViewPage<List<CompanyName.MyProduct.MyCategory>> 

Hoặc bạn chỉ có thể đơn giản hóa này từ MVC3 như thế này:

@model List<CompanyName.MyProduct.MyCategory> 

Cú pháp đường này là được thực hiện để đơn giản hóa việc nhập mã. khai này cung cấp cho bạn một số điều

  1. Xem tự động đúc tượng để loại ưa thích
  2. Bạn nhận được kiểu định nghĩa 'mô hình' sở hữu cho phép bạn truy cập vào với các phương pháp đối tượng và thuộc tính
của bạn

Chỉ cần tin rằng đây là phương pháp chấp nhận đối tượng và truyền cho loại được chỉ định mà bạn cung cấp