遇到一个关于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能自动解码,哈哈,后来试了下才发现的!

原文地址:https://www.cnblogs.com/pyt5208/p/473528.html