使用脚本管理器注册客户端脚本块



我正在尝试通过单击按钮来更新aspx页面上的某个部分,我希望在没有任何回发的情况下完成此操作。

我在母版页中放置了一个脚本管理器,如下所示:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />

我正在尝试使用 ScriptManager.RegisterClientScriptBlock 在按钮单击时将 JavaScript 注册到 Literal 控件中。以下是我在aspx页面上的内容

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Panel ID="Panel_Map" runat="server" Visible="false">
            <telerik:RadScriptBlock ID="RadScriptBlock_Map" runat="server">
                <div id="mapArea" style="width: 1000px; height: 1000px"></div>
                <asp:Literal ID="Literal1" runat="server" />
            </telerik:RadScriptBlock>
        </asp:Panel>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="RadButton1" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<telerik:RadButton ID="RadButton1" runat="server" OnClick="RadButton_Search_Click" Text="Search" OnClientClicking="validateSearchFilter"></telerik:RadButton>

代码隐藏

protected void RadButton_Search_Click(object sender, EventArgs e)
{
    this.Testing();
}
Protected void Testing() 
{
    Literal1.Text = @"
    <script type='text/javascript'>
        var user = 'http://www.robotwoods.com/dev/misc/bluecircle.png';
        function initialize() {
            var mapOptions = {
                center: new google.maps.LatLng(" + userLongitude + ", " + userLatitude + "), " + @"
                zoom: 15,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var myMap = new google.maps.Map(document.getElementById('mapArea'), mapOptions);
            var userMarker = new google.maps.Marker({
                position: new google.maps.LatLng(" + userLongitude + ", " + userLatitude + "), " + @" 
                map: myMap,
                icon: user
            });" + markers + @"} " + "n window.onload = initialize; " + @"
    </script>";
    // Make Panel_Map visible
    Panel_Map.Visible = true;
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "testing", Literal1.Text, true);
}

我也尝试使用ClientScript.RegisterClientScriptBlock,但这不起作用。我还尝试提醒随机文本代替"Literal1.Text",但这似乎也不起作用。我已经测试了上面的JavaScript代码,并且没有任何问题,但是当我将其包装在UpdatePanel中时,它似乎不起作用。

任何想法将不胜感激。

RegisterClientScriptBlock 的最后一个布尔参数用于自动为您添加 <script> 标签,但在这种情况下,您已经在脚本字符串中添加了标签,然后您必须将最后一个参数设置为 false 或从字符串中删除脚本标签。

相关内容

最新更新