我需要提供一个 html 表单(不是服务器表单),以便在 asp.net web-forms 网站中进行搜索。该表格将发布到执行索引搜索的另一个网站。看到嵌套表单在 asp.net 中效果不佳,最简单的方法是什么?
嵌套表单是一个简单的 html 表单,它对搜索网站执行“获取”,我无法对其进行编程控制。
更新:我通过简单地将服务器表单移动到页面上的适当位置来解决我的问题,而不是让它围绕整个页面。但是,我仍然想知道如果 html 表单需要物理放置在服务器控件(需要服务器表单)之间,将如何处理。
我需要提供一个 html 表单(不是服务器表单),以便在 asp.net web-forms 网站中进行搜索。该表格将发布到执行索引搜索的另一个网站。看到嵌套表单在 asp.net 中效果不佳,最简单的方法是什么?
嵌套表单是一个简单的 html 表单,它对搜索网站执行“获取”,我无法对其进行编程控制。
更新:我通过简单地将服务器表单移动到页面上的适当位置来解决我的问题,而不是让它围绕整个页面。但是,我仍然想知道如果 html 表单需要物理放置在服务器控件(需要服务器表单)之间,将如何处理。
嵌套表单不仅“效果不佳”,而且基本上每页根本不能有 >1 个表单。最简单的方法是您被迫采用的方法:编写一个仅使用一个<form runat="server"></form>. 由于您需要搜索功能,是否没有可以使用的 ASP.NET 搜索框控件?
在这里阅读。
但是,我仍然想知道如果 html 表单需要物理放置在服务器控件(需要服务器表单)之间,将如何处理。
您可以在页面上放置控件而不需要 HtmlForm。
在您的情况下,声明另一个表单标记没有问题,但您也可以在主表单上使用一些搜索控件并使其向该网站发出 GET。
有4个解决方法:
更多详情请访问 http://www.revindex.com/Blogs/tabid/65/EntryID/21/Default.aspx
嵌套表单在 HTML 句号中不能很好地工作!你永远不应该这样做。
也许您的意思是页面上的表格不止一种?虽然您确实只能拥有一个带有 的表单runat="server",但我看不出为什么您不能拥有发布到同一级别(即非嵌套)另一个站点的标准表单(不是服务器表单)的任何原因。
例如,也许您尝试Server.Transfer()从按钮进行搜索的目标页面!
尝试将您的 HTML 输入元素添加到您想要嵌套表单的任何位置。然后使用 JQuery 将页面表单动作更改为指向外部网站。提交了整个表单,但使用了不同的外部 URL。次要的缺点是页面上所有输入元素的值都已发布,但大多数时候这没什么大不了的。
(我只尝试使用 POST,而不是 GET。这基本上是 Roman O 的 #3 解决方法更详细)
<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>