C# 在ASP.NET中使用Google自定义搜索和;未捕获类型错误:无法读取属性';设置';“未定义”的定义;

C# 在ASP.NET中使用Google自定义搜索和;未捕获类型错误:无法读取属性';设置';“未定义”的定义;,c#,jquery,twitter-bootstrap,google-custom-search,C#,Jquery,Twitter Bootstrap,Google Custom Search,我发现了半相似的问题,但没有一个能说明我的情况,所以我希望这能帮助我和其他遇到同样问题的人。长话短说,我正在尝试使用以下引导解决方案在ASP.NET(Web表单)CMS中实现(整版)Google自定义搜索框: 我创建了Bootstrap弹出框,其中嵌入了我的Google自定义搜索作为.ascx控件,它工作正常,但当我单击搜索图标时,控制台中出现JS错误,我认为问题是因为我的ASP.NET CMS已经有回发表单,这使集成变得复杂,因为在我的ASP.NET中会有一个嵌套的,它不是有效的HTML,这就

我发现了半相似的问题,但没有一个能说明我的情况,所以我希望这能帮助我和其他遇到同样问题的人。长话短说,我正在尝试使用以下引导解决方案在ASP.NET(Web表单)CMS中实现(整版)Google自定义搜索框:

我创建了Bootstrap弹出框,其中嵌入了我的Google自定义搜索作为.ascx控件,它工作正常,但当我单击搜索图标时,控制台中出现JS错误,我认为问题是因为我的ASP.NET CMS已经有回发表单,这使集成变得复杂,因为在我的ASP.NET
中会有一个嵌套的
,它不是有效的HTML,这就是为什么我在控制台中收到一个JS错误,说:Uncaught TypeError:无法读取未定义的属性“settings”

这是Google希望我粘贴到自定义控件中的
中的代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="GoogleCustomSearch.ascx.cs" Inherits="GoogleCustomSearch" %>

<!-- Google custom search in a pop-up -->
<ul class='nav navbar-nav navbar-right google-custom-search-box'>
    <li>
        <a href="#search">
            <span id="searchGlyph" class="glyphicon glyphicon-search"></span>
        </a>
    </li>
</ul>

<div id="search">
    <button type="button" class="close">×</button>
    <script>
      (function() {
        var cx = 'my-cx-number-123456';
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//cse.google.com/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();
    </script>
    <gcse:search></gcse:search>
</div>
上面的代码创建了嵌套的
标记,我正试图避免它。那么,避免这个问题的最佳替代方案/代码是什么


顺便说一下,我想在同一个弹出窗口中显示搜索结果,并在GCS仪表板中选择“全宽”外观。

您能将页面(视图源)的实际HTML输出复制到JSFIDLE或其他文件中吗。我对这里发生的事情有点困惑。我发现这篇文章解释了同样的问题,但这篇文章建议使用搜索结果页面,而不是在同一页面上显示搜索结果,这就是我对如何继续感到困惑的地方:你最好使用iframe然后在其中加载搜索结果(类似于导航到另一个链接,但仅使用页面的一部分)嗯……这不是一个完美的解决方案,但也不是一个坏主意。我会试一试。@MattiPrice谢谢你的建议。iframe解决方案可以工作,但我很难用jQuery使嵌入的表单输入字段聚焦。在嵌入iframe之前,我可以用
$(“#gsc-I-id1”).focus()控制字段;
但现在不是了。
// Google search pop-up
    $(function () {
        $('a[href="#search"]').on('click', function(event) {
            event.preventDefault();
            $('#search').addClass('open');
            $('body').addClass('gsc-overflow-hidden');
            $('#gsc-i-id1').focus();
            $('#gsc-i-id1').attr('placeholder', 'Search...');
        });

        $('#search, #search button.close').on('click keyup', function(event) {
            if (event.target == this || event.target.className == 'close' || event.keyCode == 27) {
                $(this).removeClass('open');
                $('body').removeClass('gsc-overflow-hidden');
            }
        });
    });