Diego, System.Web.Mvc.WebViewPage
là loại cơ sở phù hợp (và bạn nên có một lớp khác kế thừa từ System.Web.Mvc.WebViewPage<TModel>
nếu bạn muốn có chế độ xem mạnh mẽ). Bạn nên đánh dấu lớp của riêng bạn là abstract
để bạn không bị buộc phải triển khai phương thức Thực thi.
Cập nhật: Để định cấu hình tất cả chế độ xem của bạn để sử dụng lớp cơ sở tùy chỉnh, hãy xem tệp ~\Views\Web.config
. Bên trong nó có một phần cụ thể Razor, nơi bạn có thể sử dụng thuộc tính pageBaseType
để định cấu hình loại tùy chỉnh của mình.
Theo như thuộc tính Ngữ cảnh, nó phải được khởi tạo hoàn toàn sau khi chế độ xem đang thực thi. Tuy nhiên, nó có thể không có sẵn nếu bạn cố gắng truy cập nó quá sớm (ví dụ, từ constructor lớp của bạn). Khi nào bạn đang cố gắng truy cập nó?
Phương thức Execute là thứ được trình biên dịch Razor cung cấp khi chế độ xem của bạn được biên dịch. Ví dụ, với các tập tin xem sau
Hello @Name!
Trình biên dịch Razor sẽ đằng sau hậu trường tạo ra các lớp sau (đây là một việc đơn giản hóa, vì vậy các chi tiết có thể được tắt, nhưng nó phải truyền đạt điểm)
public class _Some_Generated_Class_Name_ : System.Web.Mvc.WebViewPage {
public void Execute() {
Write("Hello ");
Write(Name);
Write("!");
}
}
Sau đó, khung gọi phương thức Thực thi trên lớp chế độ xem của bạn và chế độ xem của bạn được thực thi.
Bạn có thể thêm hành vi cho tất cả các lớp học của mình thông qua các phương pháp mở rộng hay bạn cần chúng để trở thành các phương pháp thể hiện? – R0MANARMY
Chủ yếu tôi cần phải thêm một số biến có thể được tham chiếu từ bên trong các khung nhìn. Tôi biết tôi có thể đạt được điều này bằng cách sử dụng các phương pháp mở rộng, nhưng cần có một cách để có các lớp tùy chỉnh viewpage như với công cụ xem aspx. – Diego