在Asp.net 2.0里使用Atlas的UpdatePanel的时候遇到一个问题:在服务器端注册使用JS的脚本会无法使用,一般会提示 “Unknown error”
经过测试发现可以如此解决.

在Asp.net 2.0里使用Atlas的UpdatePanel的时候遇到一个问题:在服务器端注册使用JS的脚本会无法使用,一般会提示 “Unknown error”

经过测试发现可以如此解决.

1.服务器端注册JS脚本的时候使用 Page.ClientScript.RegisterStartupScript() 或 Page.ClientScript.RegisterClientScriptBlock(),不使用Page.RegisterStartupScript()和Page.RegisterClientScriptBlock()
 前两个方法是Asp.net 2.0里用来代替后面两个在Asp.net1.1里的两个注册脚本的方法的.参考:http://msdn2.microsoft.com/zh-CN/library/z9h4dk8y.aspx

http://www.microsoft.com/china/msdn/library/webservices/asp.net/JAVAwASP2.mspx?mfr=true
如下:

AtlasUpdatePanelTest.aspx

<%@ Page Language=C# AutoEventWireup=true CodeFile=AtlasUpdatePanelTest.aspx.cs Inherits=AtlasUpdatePanelTest %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    
<title>无标题页</title>
</head>
<body>
    
<form id=”form1″ runat=”server”>
    
<atlas:ScriptManager ID=”ScriptManager” runat=”server” EnablePartialRendering=”true” />
        
<h4>
            With an UpdatePanel
</h4>
        
<!– This section of the page is wrapped by an UpdatePanel. –>
        
<atlas:UpdatePanel ID=”up” runat=”server” Mode=”Conditional” RenderMode=”Inline”>
            
<ContentTemplate>
                
&nbsp;<asp:TextBox ID=”TextBox1″ runat=”server” AutoPostBack=”True” OnTextChanged=”TextBox1_TextChanged”></asp:TextBox><br />
                
&nbsp;<asp:Label ID=”Label1″ runat=”server”></asp:Label><br />
                
<asp:Button ID=”BtnTest” runat=”server” OnClick=”BtnTest_Click” Text=”TestJavaScript” />
            
</ContentTemplate>
        
</atlas:UpdatePanel>
        
<asp:Button ID=”Button1″ runat=”server” OnClick=”Button1_Click” Text=”OutUpdatePanel” />
    
</form>
</body>
</html>

AtlasUpdatePanelTest.aspx.cs

public partial class AtlasUpdatePanelTest : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{

    }

    
protected void TextBox1_TextChanged(object sender, EventArgs e)
    
{
        Label1.Text 
= TextBox1.Text;
    }

    
protected void BtnTest_Click(object sender, EventArgs e)
    
{
        Page.ClientScript.RegisterStartupScript(Page.GetType(), 
TestJS@”alert(“”Page.ClientScript.RegisterStartupScript””)true);
        Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), 
TestJS@”alert(“”Page.ClientScript.RegisterClientScriptBlock””)true);
       
// Response.Write(“<script>alert(\’a\’)</script>”);  //无法在Atlas UpdatePanel里使用
       
//Page.RegisterStartupScript(“Test”, “<script>alert(\’Page.RegisterStartupScript\’)</script>”); ////无法在Atlas UpdatePanel里使用
    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{
       
//不在Atlas UpdatePanel 里可以使用
        Response.Write(<script>alert(\’a\’)</script>);
        Page.RegisterStartupScript(
Test<script>alert(\’Page.RegisterStartupScript\’)</script>);
    }

}

版权声明:本文为adandelion原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/adandelion/archive/2006/09/24/513504.html