5

私は従来の ASP のバックグラウンドを持っていたため、1 つのページに複数のフォームを配置することに慣れていましたが、ASP.NET ページではこれが明らかに制限されていました。

ただし、ユーザーからの入力を収集し、データを DB に保存するフォームがあり、その後、PayPal Web サイトに投稿する特別なフォームをレンダリング (およびその値を微調整) したい状況があります。

PayPal フォームのフィールド値が静的であれば問題はありませんが、サーバー側でフォームを操作したい (qty、desc、price フィールドなどを微調整する) ため、これ問題になります。

DBへの書き込み後に別のページにリダイレクトすることを検討していましたが、これはかなりうまくいくと思いますが、不要かもしれない余分な努力です.

また、サイクルのどこにいるかに応じて、プログラムで別のフォームをレンダリングできることも示唆されています。つまり、プレースホルダーを使用し、Page_Load で最初に DB フォーム (子コントロールを含む) を追加し、ポストバックの後に PayPal フォームを追加します。

このシナリオは皆さんにとって一般的なものでなければならないので、意見のアドバイスと関連するコード サンプルを探しています。

なんとかやり遂げられることはわかっていますが、このプロジェクトは学習手段であるため、ベスト プラクティスとして通用するものを採用したいと考えています。

前もって感謝します...

クリス

4

4 に答える 4

8

runat="server"複数のフォームを持つことができます。属性を持つことができるのは1つのフォームだけです。

PayPalを機能させるための答えはたくさんあります。しかし、それは不正行為をしている可能性のある学習手段であるためです。正直なところ、私はやや単純な形式の方法を使用するのではなく、本格的なPayPal APIを検討します(学習をさらに伸ばす必要があるという追加の利点があります)。

それ以外の場合は、サーバー側フォームの外部にHTMLフォームを設定し、それにリテラルを追加して、そこに断片を書き込みます。

于 2008-09-18T10:07:29.950 に答える
1

基本的なアプローチは、ページ上で2つのパネルを使用することです。1つは最初のフォーム用で、もう1つは2番目のフォーム用です。

表示するフォームに応じて、これらのパネルの可視性プロパティを変更できます(page_load中またはレンダリング前の任意の時点)。

于 2008-09-18T10:06:26.287 に答える
1

質問を誤解しているかもしれませんが、フォーム内に2つのdivがあり、いつでも1つしか表示されないということはできません。例えば

<form id="Form1" method="post" runat="server">
    <div id="getUserInput" visible="true">
          <asp:button id="btnSubmitFirst" />
    </div>
    <div id="doSubmissionToPaypal" visible="false">
          <asp:button id="btnSubmitSecond" />
    </div>
</form>

次に、btnSubmitFirst_Clickで:

 doSubmissionToPaypal.visible=True
 getUserInput.visible = false

それらの線に沿って何か?

于 2008-09-18T10:08:03.320 に答える
0

このペイパルの回避策は、ペイパル統合コードを使用することです。これは、ペイパルが常に統合しやすいとは限らないためです。ハードワークは基本的にあなたのために行われます。

于 2008-09-18T11:03:05.807 に答える