2010-07-04 58 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格式。