ASP.Net使用POST与Server.Execute

时间:2011-05-16 23:25:16

标签: asp.net

我正在尝试做类似

的事情
Server.Execute("page1.aspx");

但我需要将POST数据传递到此页面。

有谁知道我怎么能做到这一点?由于Server.Execute只接受3个参数,因此这些都与POST数据无关。

解决方案:7小时后......

不幸的是,我能够做到这一点的唯一方法是传递查询字符串中的参数(使用GET请求)。我已经在网上搜索了一段时间,最后觉得这对我的应用来说已经足够了。我测试过,不知何故,4K chars的GET URL大小限制在这种情况下并不好。

我能够成功执行一个带有640K +字符的Server.Execute方法到另一个页面,并且它工作得很漂亮。

Server.Execute("~/pageB.aspx?foo=" + new string('x', 640000));

在pageB中:Page_Load();

Response.Write(Request["foo"].ToString().Length());

结果:640000

所以我想现在必须这样做。

我害怕必须在查询字符串中发送大型参数,但由于它有效,我该抱怨谁! :)

1 个答案:

答案 0 :(得分:1)

绝对需要使用Server.Execute()吗?

如果没有,要将页面A发布到页面B,您可以将页面A的.PostBackURL设置为页面B,然后在页面B中检查是否(this.PreviousPage != null);如果它不为空,那么在页面B中,您可以使用this.PreviousPage.FindControl()((PageA)this.PreviousPage).txtFirstName.Text之类的内容来获取输入值。

如果某些值不是直接用户输入的,您仍然可以将值分配给隐藏控件,并使这些隐藏控件成为页面A的公共属性,以便页面B在将.PreviousPage转换为{后可以访问它们{1}}。

如果您不想要求对特定发送类或接口的类型安全引用,最简单的替代方法可能是使用类似technique to encapsulate values in Context.Items的内容:

PageA