0

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

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

现在在同一个用户控件上的一些按钮事件上,我想读取查询参数ImageUrl

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

 }

但请求。QueryString由于在某个.aspx页面上添加了用户控件,因此不会给我任何东西,因此请求路径将是.aspx没有查询参数的同一页面。

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

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

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

4

2 回答 2

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"];
于 2014-12-18T12:42:10.713 回答
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();
}
于 2014-12-18T12:42:37.770 回答