ASP.NET动态输出Javascript文本格式换行问题

前言

在动态输出Javascript的时候我们习惯用Response.write("<script language=\"javascript\" type=\"text/javascript\">alert(1);</script>");这样的语句来动态输出,但是你可能没注意到里面的格式问题,比如,我测试连接数据库,如果连接失败就打印catch信息,但是你会发现你直接输出是输出不了的,会报错,比如字符串没有结束之类的脚本错误。

正文

一、普通输出问题分析、测试

1.我们先来看一段代码:

/// <summary>
/// 连接接数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
  protected void btnConnect_Click(object sender, EventArgs e)
{
  try
  {
   ///此处填写连接数据库的代码
  }
  catch (Exception ex)
  {
   Response.Write(Alert(string.Concat("连接失败!!出错原因:", ex.Message)));
  }
}

/// <summary>
/// 弹出信息
/// <script language="javascript" type="text/javascript">
///  alert(msg);
/// </script>
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public static string Alert(string msg)
{
 return Javascript(string.Concat("alert('",msg,"');"));
}

/// <summary>
/// 输出Javascript代码
/// <script language="javascript" type="text/javascript">
///  alert("弹出框例子!");
/// </script>
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public static string Javascript(string context)
{
 return string.Concat("<script language=\"javascript\" type=\"text/javascript\">", context, "</script>"); ;
}

说明分析:这里调用方法btnConnect_Click让他衡失败,比如连接字符串错误,这里假设连接字符串为:Data Source=.\;Initial Catalog=test;User ID=sa;Password=sa 。那么调试时ex.Message信息会显示"无法打开登录 'test' 中请求的数据库。登录失败。\r\n用户 'sa' 登录失败。",那么现在我可以很肯定的告诉你,你直接输出肯定会报Javascript错误,显示" 确实')' ",跟踪发现它输出的字符串如下:

<script language="javascript" type="text/javascript">alert('连接失败!!出错原因:无法打开登录 'test' 中请求的数据库。登录失败。
用户 'sa' 登录失败。');</script>

我们把这代码直接复制到ASPX页面里,果然报错,而且错误也比较明显了,alert输出的信息不在一行上,也不支持C# 的'@' ,问题就出在这里了!!

时间: 2024-11-03 05:00:38

ASP.NET动态输出Javascript文本格式换行问题的相关文章

asp 正则实现清除html文本格式的函数代码_应用技巧

复制代码 代码如下: <% '/* 函数名称:Zxj_ReplaceHtml ClearHtml '/* 函数语言:VBScript Language '/* 作 用:清除文件HTML格式函数 '/* 传递参数:Content (注:需要进行清除的内容) '/* 函数作者:张晓军(古城童话) QQ:382511147 '/* 函数说明:正则匹配(正则表达式)模式进行数据匹配替换 Function ClearHtml(Content) Content=Zxj_ReplaceHtml("[^&

Asp.net导出Excel/Csv文本格式数据的方法_实用技巧

刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪明了反而有些麻烦,就像如果输入身份证(18位数字)的话那就不行了.超过了11位呢,下面查了些资料总结一下解决方案: 方法1: 在往excel中添加数据的时候在数据的前面加 单引号,我的是这个方法解决的 如:Sheet.Cells[iRow, iCol] ="'"+ ds.Tables[0]

asp 正则实现清除html文本格式的函数代码

复制代码 代码如下: <% '/* 函数名称:Zxj_ReplaceHtml ClearHtml '/* 函数语言:VBScript Language '/* 作 用:清除文件HTML格式函数 '/* 传递参数:Content (注:需要进行清除的内容) '/* 函数作者:张晓军(古城童话) QQ:382511147 '/* 函数说明:正则匹配(正则表达式)模式进行数据匹配替换 Function ClearHtml(Content) Content=Zxj_ReplaceHtml("&am

asp.net 动态输出透明gif图片_实用技巧

查了国内几个中文资料都没解决,最后是在一个英文博客上找到一个可以用的办法.他的解决代码是: 代码 复制代码 代码如下: //存成gif.ashx <%@ WebHandler Language="C#" Class="Gif" %> using System.IO; using System.Web; using System.Drawing; public class Gif : IHttpHandler { /// <summary> /

ASP.NET 2.0 里输出文本格式流

asp.net 在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html..aspx)等方法. 但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢? 我们最直接的想法是,把这些内容先保存成网页文件,再调用它.这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成 许多临时文件,这些文件可能永远也用不着了. 另一种最好的方法是利用文本格式流,把页面内容动态地展示出来.例如,有一

ASP.NET 2.0里输出文本格式流

在用 ASP.NET 编程时,打开一个页面一般是通过指定超链接地址,调用指定的页面文件(.html..aspx)等方法. 但是,如果即将打开的页面文件的内容是在程序中动态生成,或者是从数据库的表里取出的,我们怎么把这些内容展示出来呢? 我们最直接的想法是,把这些内容先保存成网页文件,再调用它.这种方法当然是可以的,但不是最好的方法,因为这样会在 Web 服务器上生成 许多临时文件,这些文件可能永远也用不着了. 另一种最好的方法是利用文本格式流,把页面内容动态地展示出来.例如,有一个页面: --

用ASP动态生成JavaScript的表单验证代码

javascript|表单验证|动态 表单的验证是开发WEB应用程序中常遇到的一关.有时候我们必须保证表单的某些项必须填写.必须为数字.必须是指定的位数等等,这时候就要用到表单验证了,一般我们常用的表单验证有2种方式: 1.编写JavaScript或VBScript的表单验证函数,在客户端进行验证:2.在表单提交后,使用ASP的方法Request.Form获取表单的输入值进行判断,然后返回结果,这是在服务端进行验证: 这2种方式都有其优缺点,比如第1种方式速度比较快,而且通常使用警告框的方式,用

用javascript实现自动输出网页文本_javascript技巧

用javascript实现自动输出网页文本,用了setTimeout(),递归和String.substring();两个函数实现此功能,下面把实现代码分享给大家. 做出的效果就像是有一个打字员在打字. <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content=&q

请问,ASP.net如何把带html格式的内容转换成纯文本的文字

问题描述 请问,ASP.net如何把带html格式的内容转换成纯文本的文字 解决方案 解决方案二:使用正则表达式对字符串进行过滤解决方案三:publicstringLostHTML(stringStr){stringRe_Str="";if(Str!=null){if(Str!=string.Empty){stringPattern="<\/*[^<>]*>";Re_Str=Regex.Replace(Str,Pattern,"&q