0

コード ビハインドからasp:PlaceHolderコントロールにフォームを追加します。タグ
にフォームを追加すると、行方不明になります。 Asp.net は何らかの理由でそれを削除します。placeholder <form>

しかし、私はこれに対する回避策を見つけました。追加しました (空のフォーム):

<form></form>
<form... my form code that comes from code behind...

そして、これはIEを除くすべてのブラウザで正常に動作します! IE
でこれを回避する方法を教えてください。

(これは重要かもしれません) このフォームは実際にはPayPal ボタン コードであり、データ ソースから取得します。
ページに 10 個のボタンを追加する必要があります。

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
<input type="hidden" name="cmd" ...
4

1 に答える 1

1

asp.net Web フォームの欠点の1 つは、通常の asp.net ページで1 つの asp.net フォームしか許可されないことです。そのフォームrunat="server"内に and がある 1 つのフォームは、asp.net コントロールのみが正しく機能し、コード ビハインドと連携します。

ただし、それを破ることはできますが、同じasp.netの機能を持ち続けることはできません。できることは、LiteralControl を使用してページに PayPal ボタン コードを直接レンダリングし、</form>. 新しいものを追加する直前のクローズのみ。

これを行った瞬間に、同じページへの投稿を忘れて、実際には PP への投稿のみを行う必要があります。一部のasp.netページを機能させる唯一の方法は、最初のフォームを閉じる前にそれを保持し、web.configで検証を維持するオプションを設定することです。

だからあなたはから始めます

<form  name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
  ... some controls that post back to aspx page    
</form>

そして、あなたはで終わる

<form  name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
  ... some controls that post back to aspx page    
  ... up to here maybe the buttons will work for the page, after that not any more
 </form> //<---- added by you
  // follow the PayPal buttons
  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
  <input type="hidden" name="cmd" ... >
  </form>

  // second button, etc
  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
  <input type="hidden" name="cmd" ... >
  </form>
// now this close form is orphan....
</form>

別の方法として、ポスト リダイレクトを行うこともできますが、コード ビハインドで PayPal ポスト データを作成する、より多くのコードと中間ページが必要です。ここに例があります http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET

同じトリックを JavaScript で実行し、その場で JavaScript を使用してフォームを作成し、それを Paypal ボタンに投稿します。これらはすべて、JavaScript を使用した同じページ上にあります。

私はそのすべてのテクニックを使用しましたが、それらはすべて機能します。

于 2013-04-28T12:43:01.373 に答える