17

Html.RenderPartial()を使用してレンダリングされている「MVCビューユーザーコントロール」を使用して、強く型付けされたビューを作成しようとしています。私のascxファイルの先頭は次のようになります。

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

現在、このページには他に何もありません。

アプリを実行してこのコントロールをレンダリングするページを読み込むと、次のエラーが発生します。

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

それで、私はそれを単純化しました:

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

そして、完全に認定する必要がある場合に備えて、次のようにします。

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

同じエラーが発生するたびに(タイプを置き換えます)。私はここで何を間違っているのですか?ASP.NET MVC1.0RTMを使用して.NET3.5を使用しています。

4

1 に答える 1

27

私はそれを動かしました。http://www.codewrecks.com/blog/index.php/2009/04/05/could-not-load-type-systemwebmvcviewpage/の指示に従いましたが、それでうまくいきました。2010年3月17日の時点で、最初にASP.NET MVC2.0RCにもアップグレードしたことに注意してください。そのページの指示に従うまで、問題は解決しませんでした。新しいMVCプロジェクトが今あなたのためにこれを行うかどうかはわかりません。

参照されているページがなくなった場合の解決策は、Web.configをViewsディレクトリに追加し、これをそのディレクトリに配置することでした。

<?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>

また、MVC 2.0の場合、構成のバージョン番号を更新する必要があることにも注意してください。

于 2010-03-17T18:50:39.710 に答える