2010-03-17 15 views
17

Tôi đang cố gắng tạo chế độ xem mạnh mẽ với "Chế độ xem người dùng MVC" đang được hiển thị bằng cách sử dụng Html.RenderPartial(). Đầu tệp ascx của tôi trông giống như sau:ASP.NET MVC Đánh mạnh một phần Xem, cho phép không thể tải lỗi loại

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>" %> 

Hiện không có gì khác trên trang này.

Khi tôi thực hiện ứng dụng và tải các trang mà ám kiểm soát này, tôi nhận được lỗi sau:

Could not load type 'System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>'. 

Vì vậy, sau đó tôi đơn giản hóa nó:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %> 

Và sau đó, chỉ trong trường hợp cần thiết để đủ điều kiện:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %> 

Mỗi lần tôi gặp lỗi tương tự (loại thay thế). tôi làm gì sai ở đây? Tôi đang sử dụng .NET 3.5 với ASP.NET MVC 1.0 RTM.

Trả lời

27

Tôi đã làm việc đó. Tôi đã làm theo hướng dẫn từ http://www.codewrecks.com/blog/index.php/2009/04/05/could-not-load-type-systemwebmvcviewpage/ và điều đó đã làm cho tôi. Tôi nên lưu ý rằng tôi cũng nâng cấp lên ASP.NET MVC 2.0 RC kể từ ngày 17/3/2010 đầu tiên. Sự cố vẫn tiếp diễn cho đến khi tôi làm theo hướng dẫn trên trang đó. Tôi không chắc chắn nếu một dự án MVC tươi làm điều này cho bạn bây giờ hay không.

Các giải pháp, trong trường hợp trang tham chiếu biến mất, là thêm một Web.config vào thư mục xem tôi, và đặt điều này trong nó:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <httpHandlers> 
    <add path="*" verb="*" 
     type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 

<!-- 
    Enabling request validation in view pages would cause validation to occur 
    after the input has already been processed by the controller. By default 
    MVC performs request validation before a controller processes the input. 
    To change this behavior apply the ValidateInputAttribute to a 
    controller or action. 
--> 
<pages 
    validateRequest="false" 
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <controls> 
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
    </controls> 
</pages> 
</system.web> 

<system.webServer> 
<validation validateIntegratedModeConfiguration="false"/> 
<handlers> 
    <remove name="BlockViewHandler"/> 
    <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/> 
</handlers> 
</system.webServer> 
</configuration> 

Tôi cũng nên lưu ý rằng đối MVC 2.0 bạn cần để cập nhật phiên bản # trong cấu hình.

+0

Cảm ơn bạn! Tôi hoàn toàn quên sao chép trên web.config thư mục xem của tôi. Tôi muốn lỗi làm cho nó rõ ràng hơn rằng đây là những gì là sai. – DavGarcia

+0

Wow, cùng một vấn đề ở đây. Tôi đã có web.config - làm việc trên máy của tôi - không phải là một phần của kịch bản xây dựng của tôi. –

+0

Tôi vừa tạo một ứng dụng MVC2 và sao chép web.config từ thư mục Views đó. Cảm ơn. –