2011-11-14 15 views
71

Tôi đang theo dõi Justin Slattery's Plugin Architecture tutorial và cố gắng điều chỉnh nó cho Razor, thay vì Chế độ xem WebForm.Chế độ xem phải xuất phát từ WebViewPage hoặc WebViewPage <TModel>

Mọi thứ khác (bộ điều khiển, tải lắp ráp plugin, v.v.) có vẻ không sao. Tuy nhiên, tôi không thể có được chế độ xem Razor được nhúng để hoạt động bình thường. Khi tôi cố gắng duyệt đến "HelloWorld/Index", tôi nhận được lỗi sau:

The view at '~/Plugins/MyProjectPlugin.dll/MyProjectPlugin.Views.HelloWorld.Index.cshtml' must derive from WebViewPage or WebViewPage<TModel>. 

Trường hợp ngoại lệ được ném bởi System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +262

tôi có thể bao gồm các stack trace hoàn chỉnh, nếu cần thiết.

Có ai có thể tư vấn cho những gì tôi có thể làm sai không?

Trả lời

155

Bạn có thể thanh toán following blog post được điều chỉnh phù hợp hơn với Dao cạo.

Nhưng để trả lời câu hỏi của bạn, vì bạn đang phân phối lượt xem từ một vị trí không chuẩn nên không còn tệp ~/Views/web.config áp dụng và cho phép bạn chỉ định loại cơ sở cho chế độ xem dao cạo của bạn. Vì vậy, bạn có thể cần phải thêm phần sau đây vào đầu mỗi chế độ xem dao cạo:

@inherits System.Web.Mvc.WebViewPage 
@model ... 
+1

Cảm ơn cả hai phần thông tin. Tôi sẽ kiểm tra blog bạn đã đề cập. – Nasir

+12

Tôi đã có thể sao chép web.config từ ~/Lượt xem đến vị trí thay thế của tôi để giải quyết vấn đề của tôi với điều này. Cảm ơn. – joelnet

+1

@Darin Dimitrov Tôi có một vấn đề tương tự. Khi tôi thử thêm '@ inherits', tôi nhận được thông báo lỗi rằng tôi không thể sử dụng' @ inherits' và '@ model' cùng một lúc. bạn có thể giúp đỡ với điều này? CHỈNH SỬA. Tôi đang sử dụng mvc4 – gumenimeda

6

Lưu ý: Tôi có vấn đề cực kỳ giống nhau và cuối cùng phải theo dõi rằng tôi là nhà phát triển duy nhất có MVC 4.0.0.0 được liên kết trong giải pháp của họ.

Mọi người khác đã tham chiếu đúng 3.0.0.0 và đang xây dựng/chạy mà không có lỗi.

TL; DR Đảm bảo rằng tham chiếu của bạn giống với phần còn lại của nhóm phát triển của bạn.

1

Tôi đã gặp vấn đề tương tự vì tôi không cam kết thư mục gói chứa thư viện dao cạo. Sau đó, tôi thêm vào gói, nó đã làm việc nhưng sau khi xây dựng lại nó đã phá vỡ. Sau đó, tôi tắt nuget tự động chạy khi xây dựng và bây giờ nó hoạt động tốt. Trong trường hợp của tôi, nuget đã làm rối tung mọi thứ.

0

Chỉ gặp lỗi này ngay hôm nay khi cập nhật dự án MVC3 cũ lên phiên bản 4 và cho tôi giải pháp là xóa thuộc tính appliesTo="v2.0.50727" trong phần <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">.

-1

Cài đặt gói: Microsoft.AspNet.WebPages Install-Package

+1

Tôi không tin rằng gói 'Microsoft.AspNet.WebPages' đã có sẵn 4 năm trước cho ASP.NET MV3. – Nasir

+2

@Nasir, tôi yêu cầu thực sự, liệu nó có được ưu tiên trên StackOverflow là câu trả lời liên quan đến công nghệ đã có sẵn tại thời điểm đăng bài ngay cả khi vấn đề vẫn còn tồn tại ngày hôm nay? –

+1

ý kiến ​​cá nhân của tôi là nếu bạn đang trả lời và câu hỏi cũ, ít nhất là thừa nhận rằng câu trả lời được cung cấp có thể không liên quan khi câu hỏi ban đầu được hỏi. Nếu không, nó xuất hiện dưới dạng câu trả lời không được định dạng hoặc người dùng không chú ý đến chi tiết (ngày là một trong những chi tiết đó). – Nasir

0

tôi muốn chia sẻ nỗi đau của tôi .. trang web đã làm việc tốt tại địa phương, tuy nhiên khi tôi xuất bản IIS của khách hàng, nó đã được ném ra lỗi này. Tất cả các tập tin web.config (root và/Views) được kết hợp hoàn hảo với một bản sao làm việc của trang web.

Một trong các chế độ xem (logon.cshtml) có kết thúc dòng không phù hợp và tôi không nhấp vào có để sửa lỗi trên máy tính Windows của mình.

Nhấp vào có vào hộp thoại kết thúc dòng không nhất quán và xuất bản chế độ xem logon.cshtml đã sửa nó cho tôi.

0

Tôi gặp lỗi này khi cố gắng thêm giàn giáo MVC (cụ thể là thư mục Views) vào dự án API Web.Darin Dimitrov's answer nói:

there is no longer the ~/Views/web.config file that applies and allows you to specify the base type for your razor views

Và trong ý kiến ​​về câu trả lời đó, joelnet said:

I was able to copy the web.config from ~/Views to my alternate location to solve my issue with this.

Paul d'Aoust said:

If you're having trouble getting the solution in @joelnet's comment to work, try cleaning and rebuilding the project.

Những gợi ý giúp tôi tìm ra giải pháp.

Trước tiên, tôi đã sao chép Web.config từ thư mục Views của một dự án khác trong cùng một giải pháp vào thư mục Views mới của tôi. Tôi đã đổi tên thẻ chính namespace để khớp với dự án mới và sau khi bị lỗi, hãy xóa một số <add namespace="..." /> khác mà tôi không cần. Sau đó, tôi đã kích hoạt một bản dựng (chỉ một bản dựng bình thường, tôi không cần phải làm sạch và xây dựng lại), và tôi có thể tải chế độ xem mới của mình mà không có lỗi.