2

我已将 MVC 站点升级到 MVC 4.0 版、.NET Framewrok 4.5 版。这样做之后,我的视图中出现了运行时错误:

方法 Microsoft.Web.Mvc.LinkExtensions.ActionLink:类型参数“ContactCentre.Controllers.LogOnController”违反类型参数“TController”的约束。

以下是引发异常的代码:

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

约束 TController 是检查类型是否为 Controller 类型。我的控制器 LogOnController 确实继承自 Controller,因此满足了该约束。

我认为问题出在我的 Microsoft.Web.Mvc 库版本上。这是运行时版本 v4.0.30319,版本 3.0.0.0。我认为这意味着它的目标是 MVC 版本 3。

是否有与 MVC 版本 4 兼容的 Microsoft.Web.Mvc 版本?还是我在叫错树?欢迎任何帮助。

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 回答