我正在尝试做类似
的事情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
所以我想现在必须这样做。
我害怕必须在查询字符串中发送大型参数,但由于它有效,我该抱怨谁! :)
答案 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