为什么表格的形式不会在Internet Explorer中运行(Why form in a form

2019-11-02 03:25发布

我从代码中添加一个形式背后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" ...

Answer 1:

其中一个dissadvanced的asp.net web表单的是,只有一个asp.net的形式允许在正常asp.net页面。 一种形式是有runat="server"和表单中只有asp.net控件正常工作,并与后面的代码cooporate。

然而,你可以打破 - 而不是继续有相同的asp.net functionallyty。 你可以做的是使用LiteralControl并在页面上直接呈现PayPal按钮代码,只有前刚刚通过关闭全球形式</form> 只有收盘之前添加新的。

现在你这样做的时候,你必须忘了回传在同一页上,实际上有它仅适用于邮政PP。 有一些asp.net页面functionallyty的唯一方式是第一种形式结束前保持它,并在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>

替代就可以使后重定向,但需要更多的代码和一个中间页上的代码创建了贝宝后的数据后面。 下面是一个例子http://www.codeproject.com/Articles/37539/Redirect-and-POST-in-ASP-NET

你可以用JavaScript做同样的伎俩,利用在飞行中的JavaScript创建一个表单,并张贴到PayPal按钮,所有的JavaScript在同一页面上。

我使用所有的技术,所有的人都适用。



文章来源: Why form in a form doesn't work in internet explorer