我想将字符串传递给.ashx页面。
通常情况下,我会通过在.aspx页面中设置参数来完成此操作,例如:Loader="TreeLoader.ashx?passedVariable=hello"
但是我想在.aspx.cs端以编程方式进行,因为值会改变。
.ashx页面接受HTTPContext:
public void ProcessRequest(HttpContext context)
{
不应该有某种方法将参数添加到上下文中,然后以类似于此的方式获取参数:
string searchString = context.Request["searchString"];
实现这一目标的最佳方法是什么?
答案 0 :(得分:6)
正确的方法取决于控件如何从aspx文件传递给ashx。如果从服务器端调用处理程序(使用Server.Transfer
方法),则可以使用上下文对象本身。例如,在aspx.c文件中
HttpContext.Current["key"] = data;
Server.Transfer("TreeLoader.ashx");
在ashx文件中
public void ProcessRequest(HttpContext context)
{
var data = context["key"];
...
您可以将实际对象作为数据传递(而不一定是字符串)。
如果将从客户端(浏览器)方进行调用,则需要将数据作为查询字符串参数传递 - 例如TreeLoader.ashx?searchString=data
,并将其作为context.Request["searchString"]
在ashx中使用。
答案 1 :(得分:0)
你是如何从.aspx.cs调用树处理程序的?我认为它与'TreeLoader.ashx?passedVariable = hello'相同,例如:Response.Redirect("TreeLoader.ashx?passedVariable=hello")
。