response.write输出 改变页面的结构

原创 2013年01月10日 10:33:55
用response.write输出东西了。输出的东西在页面的最上面,比如
....
<Doctype ...>
<html> ..
也就是在页面的前面加了东西,这样就破坏了页面的结构,感觉上,css也就出问题了。呵呵
事实上是response.write打乱了页面的结构所致,解决方案如下:
方法0:换成客户端脚本程序

Page.RegisterStartupScript("ssss", "<script>alert('图片格式不正确')</script>");

说明:ssss相当一个标识ID,只要不重覆就可以

方法一:把 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>");
 
 
 
======================================================================

解决:使用RegisterClientScriptBlock或RegisterStartupScript方法。

namespace Common
{
    /// <summary>
    /// 提示信息
    /// </summary>
    public class MessageBox
    {
        public static void Alert(Page page,string message)
        {
            if (!page.ClientScript.IsClientScriptBlockRegistered("demo"))
            {
        //HttpContext.Current.Response.Write("<script>document.location=document.location;alert('" +message + "');</script>");网上有人使用这种解决方法,但重设document.location会重新加载页面。
                  page.ClientScript.RegisterClientScriptBlock(page.GetType(), "demo", "<script>alert('" + message +"');</script>");
            }
        }
    }
}

使用:

Common.MessageBox.Alert(this,"每位学生只能选择一个题目!");

DEMO,查看几种方法输出的位置区别:

后台文件,Default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Response.Write("<script>alert('Hello'');</script>");

        //this.ClientScript.RegisterStartupScript(this.GetType(), "demo", "<script>alert('" + "Hello" + "');</script>");
        this.ClientScript.RegisterClientScriptBlock(this.GetType(), "demo", "<script>alert('Hello'');</script>");
    }
}

输出的页面:

Response.Write输出在页面内容上方。

<script>alert('Hello');</script>

<!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><title>

</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
      <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"   

        value="/wEPDwULLTE2MTY2ODcyMjlkZAVpRcHibkbkAXYhTouZnL6SNJ8d" />
    </div>

      <div>

      </div>
    </form>
</body>
</html>

RegisterStartupScript输出在ASP.NET页面底部,关闭元素</form>之前。

<!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><title>

</title></head>
<body>
  <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
      <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

        value="/wEPDwULLTE2MTY2ODcyMjlkZAVpRcHibkbkAXYhTouZnL6SNJ8d" />
    </div>

      <div>
      </div>
    <script>alert('Hello');</script>

  </form>
</body>
</html>

RegisterClientScriptBlock输出在ASP.NET页面中开启元素<form>之后。

<!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><title>

</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
      <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

        value="/wEPDwULLTE2MTY2ODcyMjlkZAVpRcHibkbkAXYhTouZnL6SNJ8d" />
    </div>

    <script>alert('Hello');</script>
      <div>
      </div>
    </form>
</body>
</html>


response的write流输出数据的问题

response的write流输出数据的问题
  • cckevincyh
  • cckevincyh
  • 2016年09月09日 16:03
  • 1650

response.write()方法将指定的字符创输出到html页面时遇到的问题

逻辑描述: nodejs中response.write(html),html中script标签引用了外部的文件是的处理: 通过构建一个静态文件服务器来实现,response.write()输出字符串...
  • qq_31411389
  • qq_31411389
  • 2017年04月25日 12:02
  • 1552

【java学习之旅】——JSTL+EL表达式让jsp页面简洁化

【前言】 &# jsp2.0之后,页面上几乎不使用Java脚本了,其实不难理解,因为在计算机中程序分工越来越明确,三层,mvc的使用都是程序划分层次结构的产物,jsp只能用做页面的显示,所以JS...
  • changyinling520
  • changyinling520
  • 2017年05月27日 21:44
  • 598

response实现案例之向页面输出中文解决乱码问题

1.向页面输出中文(乱码问题)                 1.1字节:                      ServletOutputStream getOutputStream()   ...
  • u010853261
  • u010853261
  • 2016年01月28日 22:00
  • 1484

response常用方法

一、Write方法   Response 对象的Write 方法可以向发往客户端浏览器的HTML 文件中直接输出信息。也就是说,Reponse 对象的Write 方法将信息从 Web 服务器输出...
  • wind8195
  • wind8195
  • 2016年09月18日 12:09
  • 780

ADF页面的输出样式

JDev version: 11.1.2.0.0 ADF页面的打印样式、邮件样式通常比普通样式简单,打印时有许多不需要显示的内容(按钮、滚动条),邮件样式尽可能简单以便在邮件中正常操...
  • luyushuang
  • luyushuang
  • 2014年09月10日 15:33
  • 874

页面无刷新处理数据(ajax以及iframe)

最近项目比较紧遇到各种各样的需求,作为一个合格的程序猿只能见招拆招了。         一般的数据处理的过程(.NET)都会选择使用后台的代码进行处理尤其是数据的增、改、删、查,如果使用到后台那...
  • chenchengEngineer
  • chenchengEngineer
  • 2013年05月09日 16:34
  • 605

JSP页面的基本结构

JSP页面的基本结构:HTML元素;注释(JSP注释,HTML注释);脚本元素(声明,表达式,脚本片段);指令(page指令,taglib指令,include指令);动作(,,)。 1、注释: 1)H...
  • gt_evolution
  • gt_evolution
  • 2015年10月19日 17:09
  • 120

HTML页面的基本结构

这是我第一次在CSDN写博客,而我想写的内容蓄积已久,这次主要是放在网上是想与你们一起来分享我的经验,我相信这些对初学者是很有帮助的,对基础不扎实的也能进一步的巩固,希望能够帮助到你们。 我主要写的主...
  • ljllfdhz528
  • ljllfdhz528
  • 2014年07月02日 16:18
  • 488

后台代码里执行弹出脚本方法!(Response.Write)

this.Response.Write("window.close();");//关闭,父窗口和子窗口都不弹出对话框,直接关闭this.Response.Write("");this.Response...
  • limshirley
  • limshirley
  • 2017年04月17日 14:18
  • 1043
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:response.write输出 改变页面的结构
举报原因:
原因补充:

(最多只允许输入30个字)