-2

グーグルの努力で特定のものが見つからなかったため、後世のためにこれを追加します。

問題:

次のメソッドまたはプロパティ間の呼び出しがあいまいです: 'System.Web.HttpUtility.UrlEncode(string)' と 'System.Web.HttpUtility.UrlEncode(byte[])'

注:この問題は、少なくとも、1 つの署名で文字列を受け入れ、同様の署名で byte[] を受け入れるオーバーロードされたメソッドに固有のものです (上記の UrlEncode 署名を参照してください)。

この問題は、ASP.NET MVC4 を使用するパーシャルで RuntimeBinderException として現れていましたが、他の環境でも発生する可能性があります。重要なのは、UrlEncode には 2 つのオーバーロードがあり、ランタイム バインダーはどちらのオーバーロードを使用するかを判断できないことです。

4

1 に答える 1

0

私の解決策:

最適ではありませんが、入力を正しい型としてキャストすることは、ランタイム バインダーに、使用する正しいメソッド シグネチャを解決できる十分なヒントを与えるようです。

たとえば、上記の例外をスローした「失敗した」コードがいくつかあります (MVC4 パーシャルから - コードは請負業者からのものであり、これがアンカー タグを作成する最善の方法であるとは提案していませんが、特定の問題を示しています)。うまく):

<a rel="nofollow"
   href="https://twitter.com/share?text=Check%20this%20out!%20@(ViewBag.Title)%20
   @(HttpUtility.UrlEncode(Request.Url.AbsoluteUri))%20%40codinghorror"
   target="_blank">
  twitter
</a>

そして、これがキャストでわずかに書き直されたものです。

<a rel="nofollow"
   href="https://twitter.com/share?text=Check%20this%20out!%20@(ViewBag.Title)%20
   @(HttpUtility.UrlEncode((string)Request.Url.AbsoluteUri))%20%40codinghorror"
   target="_blank">
  twitter
</a>

この修正の後、問題のあるページをリロードしたところ、確かに、POOF! は機能しました。

ハッピートレイル!

于 2013-05-13T20:35:34.277 に答える