在asp.net页中执行这段代码Response.Write("<script>alert('清空失败,请重试!');</script>");时有时候会使页面的布局发生变化,不过内容不变,为什么啊?指点一下怎么解决?

解决方案 »

  1.   

    net中使用response.write输出js会将js放在源代码的最前面,这样就可能出现破坏网页css的效果,让css失去效果 
    net中使用Page.ClientScript.RegisterStartupScript(this.GetType(), "", " <script lanuage=javascript> </script>"); 
    可以解决页面变型或是css失效的问,但是代码会继续执行后面的程序。 
      

  2.   

    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('清空失败,请重试!'); ",true );这样会更好点
      

  3.   

    Response.Write输出的脚本会写在网页的html标记之前,这是一种很不正规的写法请用Page.ClientScript.RegisterStartupScript注册
      

  4.   


    比方说在页面里面有个LinkButton,要点击以后要打开新窗口,而且新窗口的URL是根据用户选择结果动态产生的。LinkButton的代码这样写:
        protected void ServiceManHistoryButton_Click(object sender, EventArgs e)
        {
            Response.Write("<script>window.open('EquipmentHistory.aspx?eid=" + ServiceManDropDownList.SelectedValue + "');</script>");
         }
    运行以后会发现,新窗口是打开了,但是原来页面的字体变大了,奇怪的问题!
    有人想也不想就说是CSS没设置好,对这些人我很无语,求教的时候最怕遇到他们
    实际原因是直接Response.write输出脚本代码到顶部,打乱了文档模型,所以造成了这样的结果。OK,解决方法有两个。方法一:把Response.Write()语句替换为这个Page.RegisterStartupScript("ServiceManHistoryButtonClick", "<script>window.open('EquipmentHistory.aspx?eid=" + ServiceManDropDownList.SelectedValue + "');</script>");这个方法用于在页响应中发出客户端脚本块,前一个参数是该Script在页面中的唯一名称(随便起,不重复就行),后一个是脚本内容。这个方法应该是微软官方推荐的方法。方法二:在原程序的Response.Write()语句后再加一句Response.Write("<script>document.location=document.location;</script>");
      

  5.   

    ASP.NET弹出对话框后网页变形解决办法 
    解决的办法1 Page.RegisterClientScriptBlock("a", "<script>alert('已拒绝 " + lb_name.Text + " 的申请');window.open('EntMemberReview.aspx','fram_src');</script>");
    解决方法2 //弹出对话框页面不变形,在.cs中写
    RegisterClientScriptBlock("", "<script>alert('弹出')</script>");