Asp.net Net嵌套表单

Asp.net Net嵌套表单,asp.net,webforms,forms,nested-forms,Asp.net,Webforms,Forms,Nested Forms,我需要提供一个html表单(不是服务器表单)用于在asp.net web表单网站中搜索。该表单将发布到另一个执行索引搜索的网站。鉴于嵌套表单在asp.net中无法正常工作,最简单的方法是什么 嵌套表单是一个简单的html表单,它对搜索网站执行“get”,我没有编程控制 更新:我通过简单地将服务器表单移动到页面上的适当位置,而不是让它环绕整个页面,解决了我的问题。但是,如果html表单需要在服务器控件(需要服务器表单)之间物理放置,我仍然想知道如何处理此问题。也许您可以尝试server.Trans

我需要提供一个html表单(不是服务器表单)用于在asp.net web表单网站中搜索。该表单将发布到另一个执行索引搜索的网站。鉴于嵌套表单在asp.net中无法正常工作,最简单的方法是什么

嵌套表单是一个简单的html表单,它对搜索网站执行“get”,我没有编程控制


更新:我通过简单地将服务器表单移动到页面上的适当位置,而不是让它环绕整个页面,解决了我的问题。但是,如果html表单需要在服务器控件(需要服务器表单)之间物理放置,我仍然想知道如何处理此问题。

也许您可以尝试
server.Transfer()
到目标页面,例如从按钮进行搜索

不仅嵌套表单“工作不好”,基本上每页都不能有>1个表单。最简单的方法是您必须采用的方法:编写一个只使用一个
的页面。由于您需要搜索功能,是否没有可以使用的ASP.NET搜索框控件


请阅读。

嵌套表单在HTML中无法正常工作句号!你不应该这样做

也许你指的是页面上不止一个表单?虽然您只能有一个带有
runat=“server”
的表单,但我看不出您没有任何理由不能有一个标准表单(不是服务器表单)发布到同一级别的另一个站点(即非嵌套)

但是,我仍然想知道,如果html表单需要在服务器控件(需要服务器表单)之间进行物理放置,该如何处理

您可以在页面上放置控件,而无需使用HtmlForm


在您的情况下,声明另一个表单标记没有问题,但您也可以在主表单上使用一些搜索控件,使其成为访问该网站的问题。

有4种解决方法:

  • 使用IFRAME
  • 使用GET请求强制提交以导航
  • 动态更改表单操作
  • 使用第三方表单处理程序

  • 有关

    的更多详细信息,请尝试将HTML输入元素添加到嵌套表单所在的位置。然后使用JQuery将页面表单操作更改为指向外部网站。提交整个表单,但使用不同的外部Url。次要的缺点是页面上所有输入元素的值都已发布,但大多数情况下这并不是什么大问题

    (我只是用一篇博文而不是GET尝试了一下。这基本上是Roman O的#3更详细的解决方法)

    
    $(函数(){
    $(“input.search按钮”)。单击(函数(){
    $('form').get(0).setAttribute('action','http://external.com');
    });
    });
    
    Righto-“每页不能有>1个表单”表示带有runat=“server”的表单。您可以在同一页面上有其他表单,只要它们没有runat=“server”。抱歉,如果这不够清楚。对,我不是指“HtmlForm”服务器控件。我在get方法中使用了一个表单标记,单击它的contained按钮后,整个页面将被发回,而不是转到该表单的“action”页面。听起来你是说这应该行吗?如果是这样的话,也许我忽略了其他一些东西。我所做的正是您已经做过的(在主HTML表单之外呈现另一个表单),这很好。我建议的另一个解决方案是使用一些定制的搜索控件(textbox和button),并嵌入逻辑以发出一个httpget。
    <div id="nested-form">
        <input type="text" name="q">            
        <input name="searchbtn" value="Go" type="submit" class="search-button">
    </div>
    
    <script>
    $(function() {
      $("input.search-button").click(function() {      
            $('form').get(0).setAttribute('action', 'http://external.com');
      });
    });
    </script>