遇到一个关于ObjectDataSource的奇怪问题
问题描述:
我要从一个页面通过GET传值到另一个含有ObjectDataSource控件的页面, ObjectDataSource控件中所需的两个参数正是从上一个页面通过GET传过来的两个值。
GET字符串如下:
“~/SeePage.aspx?Status=未处理&Source=内部”
ObjectDataSource配置,如下图:
但奇怪的是,通过在数据层设断点发现,传到ObjectDataSource中的”Status”中的值只剩下两个字”未处”,后面的”理”字不见了。但是”Status”中如果是二个或四个字的,却可以完整的取到。难道是个小BUG?
解决方案:
后来怎么弄都不行,只好把GET字符串先进行URL编码一下再传过去,代码如下:
"~/SeePage.aspx?Source=" + Server.UrlEncode("外部") + "&Status=" + Server.UrlEncode("未处理")
然后在ObjectDataSource中手动设置一下参数源是QueryString,设置一下QueryStringField就行了。
这样子其实就可以解决了,但是我又节外生枝,以为通过URL编码传过去的字符串,ObjectDataSource控件不能自动解码(其实可以),于是就在Page_Load事件函数中手动添加了ObjectDataSource中所需的参数值,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string status=Server.UrlDecode(Request.QueryString["Status"]);
string source = Server.UrlDecode(Request.QueryString["Source"]);
this.ObjectDataSource1.SelectParameters.Add("Status", status);
this.ObjectDataSource1.SelectParameters.Add("KnowSource",source);
}
没想到ObjectDataSource能自动解码,哈哈,后来试了下才发现的!