官方QQ群:127876820【C#编程技术-全国站--未满人】

Server对象:数据格式化01

第一:格式化html数据

这里首先涉及的是在一个HTML网页中如何显示HTML代码的方法。

字符与等价的HTML实体的关系

< :&
> :"

如果我们在输出流中直接使用< >这些标签是无法在浏览器上明文显示的。

等等~~ 我们在需要的时候,必须对他们进行转换。即Server对象的HTMLEncode方法。

Response.Write “Server.HTMLEncode ("& QUOT & strvalue & QUOT & ") returned"

现在所能做的就是把HTMLEncode方法应用于正在输出的值上:


strResult = Server.HTMLEncode(strvalue)
Response.Write "Server.HTMLEncode (" & QUOT & strResult & QUOT & ") returned"

从HTMLEncode方法本身考虑:

This is <B>"bold"</B> text

上面的语句在HTML网页中得不到同样的显示结果,这是因为HTML字符实体将被浏览器处理和执行,并显示为实体所替代的字符。换句话说,得到的是:

This is <B>”bold”</B> text

我们没有看到实体。为了避免这种情况,可两次使用Server.HTMLEncode方法。这就把“&”号变换为“&”,这样就得到了所需的显示结果。示例网页的这个部分的代码是:

If Len(Request.Form(“cmdHTMLEncode”)) Then
strvalue = Request.Form(“txtHTMLEncode”)      ‘Get the value from the text box
strResult = Server.HTMLEncode(strvalue)          ‘HTMLEncode to convert <,> and “
strDisplay = Server.HTMLEncode(strResult)       ‘Then again to convert & to &
Response.Write “<B>Results:</B><BR>Server.HTMLEncode (“ & QUOT & strResult _
& QUOT & “) returned <B>” & QUOT & strDisplay & QUOT _
& “</B><HR>”
End If

HTMLEncode与HTML控件的缺省值

从上面可以看出,如果在一个HTML网页中要显示HTML代码,而又不使之被作为HTML进行处理和执行,HTMLEncode方法是非常有用的。在大多数普通的ASP网页中不大可能会遇到这种情况,除非使用包含有HTML的数据库或其他数据源中的数据,而又需要作为文本进行显示。

但是HTMLEncode方法真正有用的地方是,通过设置value属性预设页面中文本类型的HTML控件的值。作为例子,可看一下已经用于练习HTMLEncode方法的示例网页的源程序。创建HTMLEncode对应的文本框的HTML在HTML页中定义如下:


<INPUT TYPE=”TEXT” NAME=”txtHTMLEncode” SIZE=”35”
value=”This is <B>"bold"</B> text”>

这是“手工编码”而不是使用Server.HTMLEncode方法。这里也只关心对双引号进行编码而不关心对尖括号的编码。为什么?这是因为如果没有这样做,该代码将被读为:

value=”This is <B>”bold”</B> text”

而在这种情况中尖括号不会带来问题,未编码的双引号则会。在文本框中替换的实际值将是“This is <B>”,即它将在第二个双引号字符处被截断。所以,在创建预置控件值的页面时,应该考虑使用HTMLEncode方法,以避免这些值被截断:

<%
strvalue = Request.Form(“txtSomevalue”)
%>

<INPUT TYPE=”TEXT” NAME=”txtSomevalue”
value=”<% = ServerEncode(“strvalue”) %>”>

当浏览器发送已经被HTML编码的一个控件的值给服务器时,自动进行反向译码。即服务器使用Request集合中原来格式的数据。

posted @ 2010-09-24 18:58  碧海蓝天_C#  阅读(184)  评论(0编辑  收藏  举报
官方QQ群:127876820【C#编程技术-全国站--未满人】