【发布时间】:2008-09-16 18:01:43
【问题描述】:
Google 自定义搜索代码作为表单标签提供。但是,Asp.net 只允许在页面上使用单个表单标签。实现其代码的最佳方式是什么,以便您可以将其包含在 aspx 页面中(例如作为 Masterpage 或导航元素的一部分)。
【问题讨论】:
标签: asp.net forms google-search google-custom-search
Google 自定义搜索代码作为表单标签提供。但是,Asp.net 只允许在页面上使用单个表单标签。实现其代码的最佳方式是什么,以便您可以将其包含在 aspx 页面中(例如作为 Masterpage 或导航元素的一部分)。
【问题讨论】:
标签: asp.net forms google-search google-custom-search
一个 ASP.NET 页面上可以有多个表单标签。限制在于服务器端 (runat="server") 表单标签。
您可以实现两个(或更多)表单标签,只要其中一个具有 runat="server" 属性并且一个不包含在另一个中。示例:
<body>
<form action="http://www.google.com/cse" id="cse-search-box"> ... </form>
<form runat="server" id="aspNetform"> ... </form>
<body>
【讨论】:
您可以有多个表单标签,但请注意它们不能嵌套。在那种情况下,你会遇到各种奇怪的事情(例如,我见过嵌套表单的开始标签显然被忽略,然后它的结束标签最终关闭了“父”表单的情况)。
【讨论】:
您需要删除表单标签并使用 javascript 发送查询。看一下 http://my6solutions.com/post/2009/04/19/Fixing-Google-Custom-Search-nested-form-tags-in-asp-net-pages.aspx
我也包含了之前和之后的代码。因此,您可以看到我为将其与 blogengine .net 集成所做的工作。
【讨论】:
你可以使用 Javascript:
<input name="Query" type="text" class="searchField" id="Query" value="Search" size="15" onfocus="if(this.value == 'Search') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Search'; }" onkeydown="var event = event || window.event; var key = event.which || event.keyCode; if(key==13) window.open('http://www.google.com/search?q=' + getElementById('Query').value ); " /><input name="" type="button" class="searchButton" value="go" onclick="window.open('http://www.google.com/search?q=' + getElementById('Query').value );" />
【讨论】: