asp.net夜话之三:表单和控件
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-21
|
d=12345”这么一个字符串,也就是以表单里HTML控件的名字=控件值的方式,并且如果存在多个控件,彼此之间以“&”分割,那么我们就可以以控件名来获取控件值。获取HTML控件值常见有以下集中方式:
|
获取方式
表单提交方式
Request.QueryString["控件名"]
适合于get方式提交的表单
Request.Form["控件名"]
适合于post方式提交的表单
Request["控件名"]
同时适合于get和post方式提交的表单
从上面我们可以看到用Request["控件名"]这种方式对于get和post两种方式都可行,那么我们就可以用这种方式来应付所有提交的表单。现在我们在“GetUserInfo.aspx”页面编写如下代码:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>注册表单提交的信息</title>
</head>
<body>
用户名:<%=Request["username"]%><br />
密码:<%=Request["pwd"]%>
</body>
</html>
我们再次输入“zhoufoxcn”和“123456”并提交表单,得到如下画面:
得到了我们期望的效果。
乱码问题
对于上面的表单,我们在用户名和密码处分别输入“周公”和“123456”,会得到如下的结果,如下图:
这里用户就变成了“???”了,之所以出现这样的情况就是因为我们的编码原因。这就像我们在酒吧里对一个懂普通话的服务员说来一杯酒,他马上会送你一杯酒;可是当我们对一个不懂普通话的服务员用普通话说来一杯酒,他就会一头雾水了。
之所以出现乱码就是因为在这里客服端请求的编码和服务器响应的编码不一致,这个问题在《asp.net夜话之二:内置对象》中讲Request和Response对象的时候讲到过,没有看过的朋友请返回去看一下,这里只贴出结果:
从上面的图上我们看到默认情况下Request的ContentEncoding为UTF8Encoding,而Response的ContentEncoding为System.Text.DBCSCodePageEncoding,二者的不一致导致了输入中文成了乱码。
我们常见的编码有gb2312、gbk和unicode几种,gb2312能显示日常生活最常用的6000多个汉字,这对于一般的公文足够了,可是如果要用来显示一个古文献就不行了(据说康熙词典收录了4万多汉字),当它不能显示的时候也会出现乱码。Gbk是在gb2312的基础上扩展的,大概能显示1万8千多个汉字,这对于一般古文献也差不多够了。Unicode则更大一些,它能显示20901个汉字(范围是从\u4e00到\u9fa5),并且还能显示日文、韩文、台湾文字、香港文字和新加坡等文字,所以目前很多网站都采用unicode编码。Utf8编码就是unicode编码中的一种,关于它们的编码原理有兴趣的朋友可以查询有关资料。
因为目前用Dreamweaver创建动态网页的时候默认都是采用gb2312编码(asp和jsp的程序员的网站编码很多都采用了这个默认值)。如果我们要想正确获取表单的值,我们可能就需要更改默认编码,对于上面的乱码问题,我们只需要更改Register.aspx页面就行,将Regist
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|