我使用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标准类来阅读这些信息。 有什么能解决我的疑问吗?
注意:我对使用字符串方法不太感兴趣。
答案 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();
}