2010-07-23 69 views
0

我有一些使用貝寶與asp.net網站的經驗,但這個問題讓我真的難住。如何通過嵌入的貝寶按鈕的HTML表單asp.net

問題的根源:您無法在頁面表單中嵌入貝寶按鈕的html表單。

原始解決方案:最初我的網站使用多個aspx頁面,所以我可以簡單地安排我的表單標籤,以便它們不會嵌入到另一箇中。

我的網站現在使用一個主aspx頁面,它繪製了不同的ascx控件。這意味着我無法在頁面周圍安排表單標籤,因此需要解決。

注意:我在各地尋找簡單的解決方案,但它是一個叢林,貝寶是一場噩夢。我在ghost form上發現了一些全部在c#中的東西。可以幫助...

在此先感謝您的幫助....

+0

我放在代碼下面我的迴應「鬼表」。使用這個,你不需要使用SDK提供的Web服務:-) – IrishChieftain 2010-08-08 15:24:12

回答

1

使用其API,而不是直接提交表單將其提交PayPal的信息。

通過這種方式,您可以將所有內容都保存爲單個表單的一部分,並在PayPal輸入和驗證周圍添加更強健的功能。

PayPal: SDKs and Downloads

0

曾與其他支付服務提供商也是這個問題。你既可以使用他們的API,或者你可以解決它通過:

  • 使結賬按鈕,一個標準的ImageButton
  • 運行像ClientScript.RegisterStartupScript()輸出HTML和Javascript兩者。 HTML應該是具有所有隱藏字段和正確ID的實際表單。 javascript是在頁面加載並提交頁面時執行的代碼。

ClientScript.RegisterStartupScript(Me.GetType(), "PaypalSubmit", "<AllMarkUp><GoesHere><script>And.Javascript</script>", False)

希望這有助於,否則,你可以使用Web服務API。通過採用這種方法,您正在執行回發,輸出HTML表單(在.NET表單之外,因爲它位於頁面的底部),然後依靠javascript實際提交它。

0

這裏有一些東西,將爲你工作。在您的代碼隱藏:

// Workaround for PayPal form problem 
CustomForm mainForm = new CustomForm(); 
mainForm.RenderFormTag = false; 

創建一個自定義窗體類覆蓋HtmlForm控件類:

public class CustomForm : System.Web.UI.HtmlControls.HtmlForm 
{ 
    protected bool _render; 

    public bool RenderFormTag 
    { 
     get { return _render; } 
     set { _render = value; } 
    } 

    public CustomForm() 
    { 
     //By default, show the form tag 
     _render = true; 
    } 

    protected override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     //Only render the tag when _render is set to true 
     if (_render) 
      base.RenderBeginTag(writer); 
    } 

    protected override void RenderEndTag(HtmlTextWriter writer) 
    { 
     //Only render the tag when _render is set to true 
     if (_render) 
      base.RenderEndTag(writer); 
    } 
}