将参数从.aspx.cs传递到.ashx

时间:2011-05-05 09:09:28

标签: c# .net asp.net

我想将字符串传递给.ashx页面。

通常情况下,我会通过在.aspx页面中设置参数来完成此操作,例如:Loader="TreeLoader.ashx?passedVariable=hello"

但是我想在.aspx.cs端以编程方式进行,因为值会改变。

.ashx页面接受HTTPContext:

public void ProcessRequest(HttpContext context)
    {

不应该有某种方法将参数添加到上下文中,然后以类似于此的方式获取参数:

string searchString = context.Request["searchString"];

实现这一目标的最佳方法是什么?

2 个答案:

答案 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")