怎样解决asp.net URL传值出现错误的问题_.Net教程
推荐:解读asp.net常用正则表达式一、字段 表达式 格式示例 说明 数字^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$(425)-555-0123425-555-01234255550123验证美国电话号码。 名称[a-zA-Z’`-\s]{1,40}JohnDoeO’Dell验证名称。最多允许使用40个大写字母和小写字母,以及一些在名称中常用的特殊字符
最近在asp.net编程中发现一个问题,如果用URL从一个页面传递字符串到另一个页面,会出现传递的字符串比如是“DK51+700中继站”;可是另一个页面接收到字符串却是:“DK51 700中继口”;加号变成了空格,“站”不能解析出来,变成了不能识别的符号“口”的情况。
经网上查询发现原因主要是,URL中有些字符被转义,象空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。如果按照网上的建议,应该对要传递的参数进行编码处理。于是,我对传递的参数进行了处理,但是又衍生了一堆问题出来;我当时为了节约时间,就没有仔细研究,用了字符串中的Replace()方法在传送前代替了这两个字符,接收到了再代替回来。现在我来具体的展示下这个问题。
1.首先,我们先看下我的开始的问题(环境:VS2008):
1.1. 新建一个网站,在其中添加一个页面,一个页面是Defaul.aspx,另一个网页Defaul2.aspx,在第一个页面中添加一个控件:HyperLink1;
后台代码:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中继站"; HyperLink1.NavigateUrl = url + name; } } |
1.2. 在第二个页面中添加一个Label控件Label1;
后台代码:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string name = Request.QueryString["Name"]; Label1.Text = name; } } |
1.3. 结果显示:“DK51 700中继口”。
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中继站"; name = name.Replace("+", "@"); name = name.Replace("站", "%"); HyperLink1.NavigateUrl = url + name; } } |
2.我当时的解决方法:用了字符串中的Replace()方法在传送前代替了这两个字符,接收到了再代替回来。
2.1第一个页面的后台代码:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url; string name; url = "Default2.aspx?Name="; name = "DK51+700中继站"; name = name.Replace("+", "@"); name = name.Replace("站", "%"); HyperLink1.NavigateUrl = url + name; } } |
2.2.第二个页面中,后台代码:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string name = Request.QueryString["Name"]; name = name.Replace("@", "+"); name = name.Replace("%", "站"); Label1.Text = name; } } |
2.3.结果是:“DK51+700中继站”。正确!
后来我在网上找到这个这样的设置,在Web.config中设置:
<system.web> <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> </system.web> |
分享:.net编程中常见错误详解1:command调用存储过程的时候,如果输出是dataset,selectcommand的command对象的connection先要指出,否则catch一辈子也是空的.. 2:存储过程的varchar字段如果是x.x的这种格式,容易出现细微的傻错误,注意不要漏了[]. 3:如果ascx文件的默认服务器控件的事件不重
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-怎样解决asp.net URL传值出现错误的问题。