0

我从后面的代码中添加了一个表单来asp:PlaceHolder控制。
当我将表单添加到placeholder <form>标签时丢失。
Asp.net 出于某种原因将其删除。

但我找到了解决方法。我已添加(空表单):

<form></form>
<form... my form code that comes from code behind...

这在除IE之外的所有浏览器中都可以正常工作!
知道如何在IE中解决这个问题。

也许这很重要)这个表单实际上是一个PayPal 按钮代码,我从数据源中获取它。
我需要在页面上添加 10 个按钮:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
<input type="hidden" name="cmd" ...
4

1 回答 1

1

asp.net webforms 的缺点之一是在正常的 asp.net 页面中只允许使用一个 asp.net 表单。一种runat="server"只有 asp.net 控件才能正确工作并与后面的代码配合使用的表单。

但是,您可以打破这一点 - 但不能继续拥有相同的 asp.net 功能。您可以做的是使用 LiteralControl 并直接在页面上呈现 PayPal 按钮代码,并且仅在使用</form>. 只有在添加新的之前关闭。

现在你这样做的那一刻,你必须忘记在同一页面上的帖子,实际上只将它用于发布到 PP。拥有一些 asp.net 页面功能的唯一方法是在第一个表单关闭之前保留它,并在 web.config 上设置将验证保留在顶部的选项。

所以你从

<form  name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
  ... some controls that post back to aspx page    
</form>

你最终得到

<form  name="aspnetForm" method="post" action="/ui/login.aspx?ReturnUrl=General.aspx" >
  ... some controls that post back to aspx page    
  ... up to here maybe the buttons will work for the page, after that not any more
 </form> //<---- added by you
  // follow the PayPal buttons
  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
  <input type="hidden" name="cmd" ... >
  </form>

  // second button, etc
  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">           
  <input type="hidden" name="cmd" ... >
  </form>
// now this close form is orphan....
</form>

或者,您可以进行帖子重定向,但需要更多代码和在后面的代码上创建 PayPal 帖子数据的中间页面。这是一个示例http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET

您可以使用 javascript 执行相同的技巧,使用 javascript 即时创建表单并将其发布到 paypal 按钮,所有这些都使用 javascript 在同一页面上。

我已经使用了所有这些技术,它们都有效。

于 2013-04-28T12:43:01.373 回答