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集合中原来格式的数据。