从Image Url [asp.net]读取查询字符串参数

时间:2014-12-18 11:26:53

标签: asp.net query-string imageurl

我使用Generic Handler[.ashx]创建了一个动态图像,然后从后面的代码中将其分配给我的用户控件上的Image。

string capt = //some random logic value.
imgCaptcha.ImageUrl = "~/BO/term.ashx?param=" + capt;

现在在同一个usercontrol上的某个按钮事件上,我想读取ImageUrl的查询参数

 protected void btnVerify_Click(object sender, EventArgs e)
 {
     //something like this
     string param = Request.QueryString["param"]

 }

但是Request。QueryString不会给我任何东西,因为在.aspx页面上添加了usercontrol 所以请求路径将是没有查询参数的.aspx页面。

但是imgCaptcha.ImageUrl给了我一些~/BO/term.ashx?param=123456的路径。

现在我想使用一些.Net标准类来阅读这些信息。 有什么能解决我的疑问吗?

注意:我对使用字符串方法不太感兴趣。

2 个答案:

答案 0 :(得分:1)

您可以生成uri并检索查询字符串参数,但字符串拆分更好:

 Uri uri = new System.Uri(Page.Request.Url, VirtualPathUtility.ToAbsolute(Image1.ImageUrl));
 var parameters = System.Web.HttpUtility.ParseQueryString(uri.Query);
 string value = parameters["param"];

答案 1 :(得分:0)

你做不到。您只能从term.ashx阅读。因此,您必须解析ImageURL参数或将参数值保存在某处。

例如,您可以将其保存在ViewState

string capt = //some random logic value.
ViewState["imgCaptchaParameter"] = capt;
imgCaptcha.ImageUrl = "~/BO/term.ashx?param=" + capt;

在方法中使用它:

protected void btnVerify_Click(object sender, EventArgs e)
{
    //something like this
    string param = ViewState["imgCaptchaParameter"].ToString();
}