【问题标题】:Transfer variable between asp pages by web request通过 Web 请求在 asp 页面之间传输变量
【发布时间】:2009-02-15 17:15:01
【问题描述】:

谁能解释如何通过网络请求在asp页面之间传输变量。 Web 请求是指 post 方法,也建议在 asp.net 页面之间传递变量的最佳方法

【问题讨论】:

  • 您指的是经典 ASP 还是 ASP.NET?您的标签适用于 .NET,但您的问题似乎与 Classic ASP 有关。
  • 谢谢。我只引用 asp.net

标签: c# asp.net vb.net


【解决方案1】:

您可以通过多种方式在 ASP.NET 页面之间传递变量-

  1. 处于会话状态
  2. 在查询字符串中
  3. 从源页面读取值 (作为属性公开)

MSDN article - How to Pass Values between ASP.NET pages

我从来不需要使用HttpWebRequest 在页面之间传递值。据我了解,这是在 Classic ASP 中传递值的标准方法。虽然您仍然可以在 ASP.NET 中使用此方法(如 Alex's answer 所证明的那样),但我认为您会发现上述方法中的一种更简洁,并且适合不同的目的。

【讨论】:

    【解决方案2】:

    看看 System.Net.WebClient.UploadString() 或 System.Net.WebClient.UploadValues()

    【讨论】:

      【解决方案3】:

      你有一些选择,你可以使用query stringsession,使用Server.Transfer and the HttpContext

      你可以做Cross-Page Postbacks,最后一页由PreviousPage属性暴露...

      【讨论】:

      • 我发现跨页面回发的唯一缺点是与服务器端验证有关 - 验证检查是在交叉回发的页面上执行的!我还没有看到解决这个问题的方法
      【解决方案4】:

      网络请求是什么意思?

      您可以使用网络请求将其发布到另一个页面。

      string myvar = "abc";
      WebRequest request = WebRequest.Create(uri);
      request.Method = "POST";
      request.ContentType = "application/x-www-form-urlencoded";
      using(Stream writeStream = request.GetRequestStream())
      {
          UTF8Encoding encoding = new UTF8Encoding();
          byte[] bytes = encoding.GetBytes("myvar=" + myvar);
          writeStream.Write(bytes, 0, bytes.Length);
      }
      

      然后使用

      在那里检索它
      string myvar = Request.Post["myvar"];
      

      但是您是否应该考虑其他选择?

      您可以使用 Session 或 Application 对象来传输它。

      您可以通过查询字符串传输它。

      【讨论】:

      • 我所说的网络请求只是发布方法。还建议哪种方法最适合 asp。
      猜你喜欢
      • 2010-09-19
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多