我将代码后面的表单添加到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" ...

最佳答案

asp.net Web表单的缺点之一是,普通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。

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

09-10 04:59
查看更多