2

MVC サイトを MVC バージョン 4.0、.NET Framewrok バージョン 4.5 にアップグレードしました。これを行った後、ビューからランタイム エラーが発生しました。

メソッド Microsoft.Web.Mvc.LinkExtensions.ActionLink: 型引数 'ContactCentre.Controllers.LogOnController' が型パラメーター 'TController' の制約に違反しています。

例外をスローするコードは次のとおりです。

Url.Action<LogOnController>(c => c.LogOff())

Constraint TController は、型が Controller 型であることのチェックです。私のコントローラー LogOnController は Controller から継承するため、その制約が満たされます。

問題は、ライブラリ Microsoft.Web.Mvc のバージョンにあると思います。これはランタイム バージョン v4.0.30319、バージョン 3.0.0.0 です。これは、MVC バージョン 3 をターゲットにしていることを意味すると思います。

Microsoft.Web.Mvc の MVC バージョン 4 互換バージョンはありますか? それとも、間違った木を吠えていますか? どんな助けでも大歓迎です。

4

2 に答える 2

5

Microsoft によって公開された Mvc4Futures NuGet パッケージは、2012 年 11 月 30 日から利用可能になっています。これには、Microsoft.Web.Mvc.dll バージョン 4.0.0.0 が含まれています。

次のようにインストールできます。

  • パッケージ マネージャー コンソールを開く
  • [既定のプロジェクト] メニューから Web アプリケーションを選択します
  • 次のコマンドを実行します。install-package mvc4futures
于 2012-10-22T12:41:51.387 に答える
3

構成ファイルに assemblyBinding リダイレクトを追加したところ、問題が修正されました。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="3.0.0.0" newVersion="4.0.0.0"/>
    </dependentAssembly>
</assemblyBinding>
于 2012-09-14T09:32:30.520 に答える