Paypal 表单破坏了我的 ASP.NET 网络表单布局 -> 如何解决?
Posted
技术标签:
【中文标题】Paypal 表单破坏了我的 ASP.NET 网络表单布局 -> 如何解决?【英文标题】:Paypal Form Ruins My ASP.NET webforms layout -> How to Solve? 【发布时间】:2011-11-17 04:25:55 【问题描述】:我是一名学生,正在 asp.net 中建立一个简单的网站。我的问题是,我希望将 Paypal 集成到其中一个页面上,但是 asp.net 的 ridiculous <form runat="server">
妨碍了我。我正在使用蓝图 css 构建一个简单的站点布局,这是一个非常基本的三列布局。但是,我需要我的主要内容部分能够使用 paypal 表单(立即购买按钮),以及网站的其他区域才能使用用户控件,我认为这需要将它们包装在那个烦人的表单标签中。事实上,我想在网站主要部分的顶部有一个站点地图路径控件:非常基本的东西。我怎样才能做到这一点?我的问题是:我无法将 Paypal 按钮放入表单中,而且我不知道如何将第 4 个 div 移动到位。我什至不确定 div 和表单是如何相互堆叠的。
请问有什么可以帮忙的吗?
有问题的页面是:http://clubofpep.org/sandbox/sandbox_Alumni.aspx。
【问题讨论】:
【参考方案1】:与流行的看法相反,您可以在 ASP.Net 网络表单页面上拥有多个表单。你不能做的是有多个带有 runat="server" 的表单,在 ASP.Net 的主表单中嵌套第二个表单,或者在主表单之外使用 asp.net 服务器控件。
因此,要将单独的 paypal 表单与 asp.net webforms 页面的其余部分集成,您必须确保可以将其放在 asp.net web 的 all 之前或之后控制页面上的控件,然后编辑 aspx 标记以确保您的 paypal 表单完全在 asp.net 的表单之外。
另一件事是,快速的网络搜索会显示大量为 asp.net 编写的 paypal 控件,这些控件将与所需的 asp.net 表单一起使用以提交付款。您可以随时尝试其中一种。
【讨论】:
我想知道 @Raphael - 表单标签是块级元素,就像任何其他块级元素一样。所以,是的,它有点像另一个 div 标签。asp.net paypal control
的 google 为我返回的结果在第一页上至少有 4 个不同的控件。
@Joel,很好的解释。我正在发布我遇到的另一个替代方案 - 创建自定义 htmlForm :)【参考方案2】:
namespace CustomForm
public class GhostForm : System.Web.UI.HtmlControls.HtmlForm
protected bool _render;
public bool RenderFormTag
get return _render;
set _render = value;
public GhostForm()
//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);
用法:
ASPX:
<%@ Register TagPrefix="CF" Namespace="CustomForm" Assembly="CustomForm" %>
<body>
<CF:GhostForm id="mainForm" runat="server">
...
</body>
<img src="https://www.sandbox.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"> <asp:Button ID="checkoutBtn" runat="server" OnClick="CheckButton_Click"
Text="Checkout" Width="100" CausesValidation="false" />
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
...
// Workaround for PayPal form problem
GhostForm mainForm = new GhostForm();
mainForm.RenderFormTag = false;
// Go ahead and submit to PayPal :)
【讨论】:
以上是关于Paypal 表单破坏了我的 ASP.NET 网络表单布局 -> 如何解决?的主要内容,如果未能解决你的问题,请参考以下文章
Windows 8.1 / Windows 10 破坏了我的 ASP.NET / IIS:“服务不可用”