1

最近、ASP.NET MVC 2 Preview 2/.NET 4 アプリケーション (VS 2010 Beta 2 を使用してビルド) を MaximumASP.com のベータ Web サイトにアップロードしました。実行しようとすると、次のエラーが表示されます。

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 (ベータ) を使用していますが、web.config で古い Preview .dll を参照して BIN フォルダーにアップロードしていますが、まだ何もありません。

-

4

5 に答える 5

3

私の場合、ASP.NET MVC 1 から古いライブラリへの参照を削除するとMicrosoft.Web.Mvc、問題が解決しました。

于 2010-04-20T14:24:16.997 に答える
2

MVC はVS2010ではサポートされていません ... これは Preview 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

レンダリング アクションをラップするのではなく、次のように拡張メソッドを明示的に呼び出すだけです。 Microsoft.Web.Mvc.ViewExtensions.RenderAction(Html, ...)

于 2010-03-30T14:07:51.327 に答える
0

開発マシンとホストの両方で、typeof(Controller).Assembly.GlobalAssemblyCacheの出力を教えてください。コントローラ コードを実行できる場合は、それを Response.Write() してから Response.End() を実行できます。これによりビューがレンダリングされなくなるため、うまくいけばそのエラーを回避できます。

編集:

ホスティング事業者は MVC バイナリを GAC 処理したため、ホスティング事業者が使用しているバイナリと同じバージョンに対してサイトをコンパイルする必要があります。bin-deployment は機能しません。ホスティング事業者が MVC 2 Beta をインストールしている場合は、MVC 2 Beta バイナリに対してサイトをコンパイルする必要があります。残念ながら、VS2010 Beta 2 には MVC 2 Preview 2 が含まれているため、VS2008 + MVC 2 Beta でサイトをコンパイルする必要があります。

MVC 2 Beta を VS2010 Beta 2 で実行する可能性がある完全にサポートされていない回避策として、Phil のブログのこのコメントを確認してください。完全にサポートされていないことを意味することに注意してください-VSの他の部分に影響を与えたり、アンインストールを妨げたり、マシンの再フォーマットが必要になったり、マシンが放射性になったりする可能性があります.

または、GAC を展開するベータ バイナリのホストを叩いて、GAC を解除してもらいます。:) 次に、コンパイル対象の特定のバイナリをバイナリ展開できます。

于 2009-11-24T19:35:45.730 に答える
0

私が考えることができる2つのこと; まず、すべてのページで名前空間の 1 つをインポートしないようにすることができます (たとえば、Microsoft.Web.Mvc.ViewExtensions をすべての <% Import %> ステートメントから削除し、残念ながら、これは、そのアセンブリ内の拡張メソッドを簡単に参照できないことを意味します。

MSDN フォーラムで提供されている代替オプションは、呼び出したいメソッドをラップするだけで、まったく別の名前を持つ独自の拡張メソッドを作成することです (例: BaddieRenderAction())。

どちらのオプションもそれほど優れたものではありませんが、2 番目のオプションを使用すると、少なくとも簡単に起動して実行できます。将来、MVC 2 がリリースされ、プロバイダーの GACed アセンブリが問題を引き起こさなくなったときに、検索と置換を実行できます。 「BaddieRenderAction」->「RenderAction」の場合、すべて修正されました。

于 2009-12-30T18:06:55.723 に答える