2010-12-11 6 views
25

Tôi vừa cập nhật lên ASP.NET MVC 3 RC2.Đã nâng cấp lên MVC 3: CS0103: Tên 'Chế độ xem' không tồn tại trong ngữ cảnh hiện tại

Ứng dụng mẫu tôi đang làm việc trên hiện đang phát triển các lỗi sau, bất cứ khi nào một cái nhìn cshtml được hiển thị:

CS0103: Tên 'Xem' không tồn tại trong bối cảnh hiện nay

Nó thất bại trên line:

@{ 
    View.Title = "MyView"; 
} 

... và thất bại ở bất kỳ nơi nào khác gặp phải Xem trong mã trên tệp Dao cạo.

Tôi đã sao chép web.config từ một ứng dụng mới Xem thư mục vào ứng dụng mẫu của tôi, nhưng sự cố vẫn tiếp diễn.

Ứng dụng hoàn toàn mới chạy mà không gặp sự cố.

Tôi cũng đã xây dựng lại giải pháp, chạy Giải pháp làm sạch. Không vui.

Tôi chưa làm việc trên mẫu trong vài ngày. Vì vậy, nó có thể là một vấn đề mà không có gì để làm với RC2 ...

+0

Đã kiểm tra các tham chiếu, chúng có vẻ giống phiên bản tệp. EG: System.Web.Mvc Tệp Phiên bản: 3.11209.0 cho cả ứng dụng mẫu của tôi, được phát triển bằng RC1 và ứng dụng mới được tạo bằng RC2 – awrigley

Trả lời

27

Nó đã được đổi tên thành 'ViewBag'. Bạn có thể đọc thêm về những thay đổi từ RC1 -> RC2 here

+0

Cảm ơn, tôi đã bỏ qua một chút bài đăng trên blog của Scott Guthrie. Không biết tại sao bạn nghĩ rằng nó là lạ - nó là tốt để có logic hiển thị trong quan điểm. Tải mẫu sử dụng. Tôi nghĩ ViewBag là một cái tên kinh khủng, nhưng nó mang tính mô tả hơn là chỉ xem thuần túy. – awrigley

+0

@awrigley chắc chắn là tốt để sử dụng logic hiển thị trong chế độ xem, nhưng ViewBag được dự định là tập hợp các thuộc tính thường được đặt trong bộ điều khiển sẽ được sử dụng trong chế độ xem ... Tôi chắc chắn rằng bạn có sử dụng hợp lệ trường hợp, nhưng tôi không thấy lý do tại sao bạn muốn đặt dữ liệu trong ViewBag bên trong khung nhìn, tôi chỉ mong đợi 'đọc' từ nó. – jeroenh

+2

chắc chắn, nhưng mẫu MVC3 sử dụng mã đó ... – awrigley

4

tôi đã cùng một vấn đề, nhưng tôi chỉ cố gắng đoán những gì để sử dụng bây giờ, tôi đã kết thúc bằng:

@Page.Title = "The title" 

và nó làm việc, mặc dù tôi không chắc chắn là những gì các "thực hành tốt nhất" tại

Ngoài ra, tôi nghĩ rằng ViewBag là những gì đã từng là ViewModel, không chỉ Xem

0

tôi thêm này trong trường hợp bất cứ ai khác đi qua nó. Một nguyên nhân khác có thể là Bố cục của bạn không được tìm thấy. Tôi đã triển khai IIS và (sau khi nhận xét ra dòng vi phạm) thấy rằng Bố cục đã không được sao chép trong khi triển khai web. Trong trường hợp của tôi, đó là bởi vì Action Build của layout đã được thay đổi từ Content thành None.

EDIT: Trên thực tế, tôi đã cài đặt MVC 3 RC. Ở trên chỉ là một triệu chứng khác nhau. Máy triển khai đã có RTM tiếp xúc với vấn đề. Như awrigley nói, bây giờ nó được gọi là ViewBag.

+0

cảm ơn, nhưng vấn đề trong trường hợp của tôi là đổi tên tài sản thành ViewBag. – awrigley