一个很普通的Asp.net2.0的页面,有一个提交按钮,点击提交按钮时会检查各个TextBox控件是否为空白,若为空白会提示用户输入信息,若不为空白则将信息存入数据库并跳转至别的页面。提示信息我用的是最普通的代码,如:Response.Write("<script language=javascript>alert('" + TxtMessage + "')</script>"); 而跳转调用的函数是:
public void ShowAndRedirect(System.Web.UI.Page page, string msg, string url)
{
    StringBuilder Builder = new StringBuilder();
    Builder.Append("<script language='javascript' defer>");
    Builder.AppendFormat("alert('{0}');", msg);
    Builder.AppendFormat("location.href='{0}'", url);
    Builder.Append("</script>");
    page.RegisterStartupScript("message", Builder.ToString());
}
如果不加入Ajax代码的话一切正常,既可以正常弹出提示框,也可以正常实现页面的跳转。但为了去掉屏幕的闪烁弊病,通过查看书本知道需要把前台的相关代码用Ajax代码包裹起来,我在页面的前台代码中加入了Ajax代码(除了要加入<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>之外),如:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate >
    <table .....>
     ......
     ......
    </table>
   </ContentTemplate>
</asp:UpdatePanel>运行结果是屏幕倒是不闪烁了,但该弹出信息框都没有了,跳转也无法实现了,请问这是怎么回事?应该如何修改才能使页面正常工作?谢谢!

解决方案 »

  1.   

    你可以把你的JS放到一个文件中,再在ScriptManager的控件中加入这个JS文件试试,那样没准就可行了,但是如果有模版最好把ScriptManager放到模版中
      

  2.   

    一楼说的对,因为你使用AJAX了,所以页面只是部分更新,则Response.Write就有问题了
      

  3.   

    具体怎么做能否讲的细一点,我是初次使用ajax。
      

  4.   

    比如说点击提交按钮的代码为:
    Response.Write(" <script language=javascript>alert('地址不能为空白!') </script>"); 
    应该如何处理?
      

  5.   

    一楼说的对,因为你使用AJAX了,所以页面只是部分更新,则Response.Write就有问题了
      

  6.   

    难道说用了Ajax后就无法与用户交互了吗?
      

  7.   

    你的提交按钮把Init这个事件加上,后台写上这些就可以了, 
           protected void LinkButtonSubmit_Init(object sender, EventArgs e)
            {
                ScriptManager1.RegisterPostBackControl((Control)sender);        }
      

  8.   

    楼主都用了ajax那么这种判断就直接用ajax的判断控件就完了呗。
      

  9.   

    to 8楼:
    protected void LinkButtonSubmit_Init(object sender, EventArgs e) 

       ScriptManager1.RegisterPostBackControl((Control)sender);

    加入您给的代码的确恢复了原有的功能,但不知这样做的话Ajax还起不起作用了?
      

  10.   

    ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "scriptName", "+message+", true);
     中间那个message就是你要输出的HTML代码
      用这个可以在UpdatePanel里输出HTML代码
     
      

  11.   

    to 8楼:
    谢谢了!不过不知怎的用了你的代码后Css好像不起作用了。
    <head runat="server">
        <title>车辆 -- 报修申请</title>
        <link href="Admin_Style.css" rel="stylesheet" type="text/css" />
    </head>
    运行后刚进页面字体字型都好好的,可如果弹出一个提示信息框(比如未输入信息)并点击确定按钮后,页面的字型就变了(大了),好像css不起作用了。难道那个代码会影响到css吗?
      

  12.   

    不会啊!我用的没有事,你这样试一试,
                    ClientScriptManager CSMC = Page.ClientScript;
                    string ScriptNameC = "clientScript";
                    if (!CSMC.IsClientScriptBlockRegistered(ScriptNameC))
                    {
                        CSMC.RegisterStartupScript(this.GetType(), ScriptNameC, "<script>alert('"+你的变量+"');</script>");
                    }