2010-07-04 59 views
9

在asp.net網頁的內容頁面中,我想包含「paypal」按鈕「立即付款」。嵌套<form>可能嗎?

所以,我有一個母版頁和一個內容頁。 在我的內容頁面我複製粘貼貝寶代碼。 特別是我使用「modalpopupextender」來允許我的用戶購買物品。 問題是......它不起作用。 所以我的假設是:

  1. 我不知道,但我想我不能使用嵌套<form action>
  2. 如果不是第一個,也許我不能使用<form action>成模式彈出?

有人可以建議我一個「優雅」的解決方案來解決這個問題嗎? 謝謝......

編輯:特別是,我想要做的是允許從網站出售。 我有一個母版頁和一個內容頁面。 很明顯,在母版頁中我有經典的「表單動作」。 然後我去了貝寶和得到這個代碼:「

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<table> 
<tr><td> 
    <input type="hidden" name="on0" value="Annuncio Premium">Annuncio Premium 
</td></tr> 
<tr><td> 
    <select name="os0"> 
     <option value="Premium 1">Premium 1 €1,00</option> 
    </select> 
</td></tr> 
</table> 
<input type="hidden" name="currency_code" value="EUR"> 
<input type="hidden" name="encrypted" value="-----BEGIN "> 
<input type="image" src="https://www.paypal.com/it_IT/IT/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - Il sistema di pagamento online più facile e sicuro!"> 
<img alt="" border="0" src="https://www.paypal.com/it_IT/i/scr/pixel.gif" width="1" height="1"> 
</form> 

所以我粘貼到我的內容頁...因爲...不改變 特別是我已經貼了。 ,這將顯示whith一個「modalpopupextender」。 它的工作。但它不工作是當我點擊貝寶「立即購買」按鈕。 我的網頁不重定向到貝寶,modalpopup消失,沒有什麼發生。

回答

17

我也有這個確切的問題,並不能相信貝寶沒有提供某種解決方案的.NET開發人員!

這是我如何解決它:

<asp:ImageButton ID="btnPayNow" runat="server" ImageUrl="myPayPalButton.jpg" 
PostBackUrl="https://www.paypal.com/cgi-bin/webscr" OnClick="btnPayNow_Click"/> 

使用的ImageButton的或正常的按鈕,只需刪除表單標籤的貝寶代碼,留在隱藏的輸入字段和數據將被張貼到貝寶網址!

尼斯和容易:)

詩篇。方法'btnPayNow_Click()'什麼也不做,簽名是存在的,但是我的代碼沒有邏輯。

+0

這完全是它解決了我的問題...謝謝你,並非常感謝其他答案...他們都是正確的... – stighy 2010-07-05 11:37:33

+0

輝煌的解決方案。 – Seany84 2013-05-01 21:00:04

+1

真棒工作 – MonsterMMORPG 2013-11-10 15:11:13

3

你是非常正確的,因爲你不能嵌套<form> s。

你也不能使用表單動作來創建一個彈出窗口 - action屬性是窗體發佈到的URL。

但是,您可以在頁面上有許多<form> s,只要它們沒有嵌套。也許這會解決你的問題。

您能否描述一下您正在努力達到的目標?你的問題不清楚問題是什麼。

0

你是對的,在你的第一個假設中,你不能在頁面中嵌套表單標籤。

您只需將彈出窗口的代碼放在窗體外部,只要它們沒有嵌套,就可以在頁面中擁有任意數量的窗體。

1

如果我正確理解了這個問題,您正嘗試創建一個包含PayPal表單的動態HTML彈出窗口。您遇到問題是因爲彈出窗口包含表單,但彈出窗口的HTML已包含在表單中。

如果您遇到的問題與我上面描述的相同,則解決方案非常簡單。您需要移除現有form元素之外的彈出式窗口的所有HTML。如果您使用CSS來正確佈置網站,則應該可以使用相對或絕對定位在網頁上顯示您需要的動態彈出窗口。彈出窗口的HTML不需要包含在另一個窗體中。也可能(甚至有必要)將彈出框的內容放入iframe,它可以完全獨立於頁面的其餘部分提交。彈出窗口工作原理的語義取決於您如何使用頁面來運行。

所以,要清楚...不可能嵌套form元素。但是,也沒有必要完成您的需求。

編輯:

地改善上述的更新問題的光答案。您可以在母版頁上擁有多個內容面板。應該完全可以在您的主頁面中創建另一個內容面板,該面板不在您的form元素中,並將您的模式彈出窗口放入此備用內容面板中。我的上述答案仍然適用,因爲您不再擁有嵌套表單。

+0

嗨Jrista。你是對的......但不幸的是我的問題依然存在。這是因爲: 1.如果我想使用「模式popupextender」,只有當我在「form runat = server」之間插入我的擴展器時,我才能做到這一點。但如果我這樣做,我得到的錯誤「只有一個形式runat =服務器每頁」(我的形式runat服務器,第一次從母版頁,第二次爲貝寶按鈕) ...嗯這是一個惱人的問題.. 。 – stighy 2010-07-04 20:54:06

+1

@stighy:應該可以使用CSS和Javascript創建一個動態彈出窗口(我推薦使用JQuery或Mootools)。您不僅限於使用ASP.NET擴展程序來實現動態網站。有網上資源負載,解釋如何使用JQuery創建模態動態彈出窗口...我強烈建議查看它們。 – jrista 2010-07-04 21:56:01

0

Dal的回答是正確的! (沒有拿我的回答信用)

當試圖向SagePay提交數據(與PayPal表單發佈相同)時,我在ASP.NET(4.0)中遇到類似問題。我在代碼隱藏使用

Dim Panel As New Panel 
Panel.Controls.Add(New LiteralControl("My <input> controls HTML")) '1 control.add per <input> control. 
MyDiv.Controls.Add(Panel) 

我寫了整個<形式>動態也,所以當它來調試我收到了關於這一問題上沒有警告,我的整個寫作表單字段中使用動態面板Site.Master位於 - 使用主模板作爲模板的.aspx頁面中不可見!這是非常令人沮喪的......直到我讀到,你不能有一個嵌套的<窗體> ...只有兩種選擇:

1)將窗體細節移到我的Site.Master從.aspx頁面本身。 (我不喜歡這個想法,凌亂凌亂!)

2)創建另一個不是發佈我的數據的控件。


我選擇了後者!

<asp:Button id="btn_payment" value="Proceed to Payment" Text="Proceed to Payment" runat="server" PostBackUrl="https://test.sagepay.com/gateway/service/vspform-register.vsp" /> 

發佈到SagePay按鈕,拉着我的動態生成的領域(從.aspx頁面中調用),併爲他們中已經從對我的Site.Master - 一切運轉良好! - 我希望這可以幫助任何人使用動態生成的HTML格式。