【问题标题】:Why form in a form doesn't work in internet explorer为什么表单中的表单在 Internet Explorer 中不起作用
【发布时间】:2013-04-22 03:57:41
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net paypal webforms


    【解决方案1】:

    asp.net 网络表单的缺点之一是在正常的 asp.net 页面中只允许使用一个 asp.net 表单。一种具有runat="server" 的表单并且在该表单内部只有 asp.net 控件可以正常工作并与后面的代码配合。

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

    现在,当您这样做时,您必须忘记将帖子返回到同一页面,并且实际上仅将其用于发布到 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 在同一页面上。

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

    【讨论】:

    • 这第一句话具有误导性。 runat=server 只能有一个表单,但一个 ASP.NET 页面中可以有多个表单,只要它们不嵌套即可。没有理由必须将整个文档包装在一个表单中,尽管这是大多数 Web 表单模板的工作方式。
    • @MikeSmithDev 你说的有道理,我会改的(或者你可以改正你的看法)
    • 我还是没有想到。但我发现这篇文章codeproject.com/Articles/36071/… 和解决方案对我来说看起来很完美,唯一的问题是我需要在一页上有 5 个按钮,不知道这个解决方案是否可行?
    • @1110 是的,这是中间页解决方案,发帖后创建一个自动发帖的页面。这里唯一的问题是您会看到一秒钟的白页。
    • 但是如何使用它在一个页面上放置 6 个按钮(来自我在之前评论中发布的链接的解决方案)?
    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多