1

我最近将我的 ASP.NET MVC 2 Preview 2/.NET 4 应用程序(使用 VS 2010 Beta 2 构建)上传到 MaximumASP.com 的 beta 网站,当我尝试运行它时出现以下错误:

CS0121:以下方法或属性之间的调用不明确:'System.Web.Mvc.Html.ChildActionExtensions.RenderAction(System.Web.Mvc.HtmlHelper, string, string)' 和 'Microsoft.Web.Mvc.ViewExtensions.RenderAction (System.Web.Mvc.HtmlHelper,字符串,字符串)'

此错误未出现在我的开发人员机器(Windows 7、VS 2010)上。知道是什么原因造成的吗?


更新

我确保我随项目上传的 .dll 可以在 Visual Studio 2010 Beta 2 中正常工作,但是当我将其上传到主机时仍然出现同样的错误。

我的主机使用的是最新版本的 ASP.NET MVC 2(Beta),但我在 web.config 中引用了旧的 Preview .dll 并将它们上传到 BIN 文件夹中,但仍然没有。

-

4

5 回答 5

3

就我而言,从 ASP.NET MVC 1 中删除对旧Microsoft.Web.Mvc库的引用解决了这个问题。

于 2010-04-20T14:24:16.997 回答
2

VS2010不支持MVC ...预览版 2 也是如此(尽管 RenderAction 是 MVC2 Beta 的一部分?)?

http://haacked.com/archive/2009/11/17/asp.net-mvc-2-beta-released.aspx

不幸的是,由于 Visual Studio 2010 Beta 2 和 ASP.NET MVC 2 Beta 共享当前不同步的组件,因此不支持在 VS10 Beta 2 上运行 ASP.NET MVC 2 Beta。

于 2009-11-24T17:43:19.267 回答
0

您能否在您的开发机器和主机上向我们提供typeof(Controller).Assembly.GlobalAssemblyCache的输出?如果您的控制器代码能够运行,您只需 Response.Write() 它,然后是 Response.End()。这将导致您的视图不呈现,因此希望您可以避免该错误。

编辑:

由于您的托管商已经 GAC 了 MVC 二进制文件,您需要针对您的托管商使用的相同版本的二进制文件编译您的站点;bin-deployment 将不起作用。如果您的主机已安装 MVC 2 Beta,您需要针对 MVC 2 Beta 二进制文件编译您的站点。不幸的是,这意味着您必须使用 VS2008 + MVC 2 Beta 编译您的网站,因为 VS2010 Beta 2 包含 MVC 2 Preview 2,它比您的托管商部署的版本更早。

作为可能使 MVC 2 Beta 在 VS2010 Beta 2 上运行的完全不受支持的解决方法,请查看Phil 博客上的此评论。请注意,我的意思是完全不受支持 - 它可能会影响 VS 的其他部分,阻止卸载并需要重新格式化机器,导致您的机器变成放射性等。

或者,为 GAC 部署的 Beta 二进制文件打击您的主机,并让它们取消 GAC 它。:) 然后你可以对你正在编译的特定二进制文件进行 bin 部署。

于 2009-11-24T19:35:45.730 回答
0

我能想到的两件事;首先,您可以确保不要在所有页面上导入其中一个命名空间(例如,从任何 <% Import %> 语句和 system.web/pages/namespaces 区域中删除 Microsoft.Web.Mvc.ViewExtensions web.config. 不幸的是,这意味着您不能轻松地引用该程序集中的扩展方法。

MSDN 论坛上提供的另一种选择是编写您自己的扩展方法,该方法只包装您要调用的方法并具有完全不同的名称(例如,BaddieRenderAction())。

这两个选项都不是很好,但是至少使用第二个选项,您可以轻松启动并运行,然后在将来 MVC 2 发布并且您的提供者 GAC 程序集不会导致问题时,您可以执行搜索和替换对于“BaddieRenderAction”->“RenderAction”,一切都已修复。

于 2009-12-30T18:06:55.723 回答
0

无需包装渲染操作,只需显式调用扩展方法,如下所示:Microsoft.Web.Mvc.ViewExtensions.RenderAction(Html, ...)

于 2010-03-30T14:07:51.327 回答