我正在尝试通过单击按钮来更新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
或从字符串中删除脚本标签。