【问题标题】:passing values to pages将值传递给页面
【发布时间】:2010-05-05 10:19:54
【问题描述】:

我在这里尝试将值传递给其他页面。当我包含以下代码时

private void Button1_Click(object sender, System.EventArgs e)
{

    Response.Redirect("WebForm5.aspx?Name="+txtName.Text);
}

if (Request.QueryString["Name"]!= null)
    Response.write( Request.QueryString["Name"]);

名称显示一切正常。现在如果使用 MemberId 代替,虽然我可以在 Url 中看到 Id,但是在检查其他页面中的 Null 时,它是真的,即 if (Request.QueryString["MemberId"]!= null) Response.write(Request.QueryString["MemberId"]);没有被打印出来。怎么了?

现在我使用会话尝试了同样的事情,即

Session["MemberId"] = this.TxtEnterMemberId.Text;

if (MemberSex.Equals("M"))
    Response.Redirect("PatientDetailsMale.aspx",false );

其他页面的Page_load事件

if (Session["MemberId"] != null)
    mid = Session["MemberId"].ToString();

IT Works..你们能解释一下这种行为吗?

附:任何人都可以用外行的话简要介绍一下 SessionId 及其用法。

谢谢你,

二甲双胍

【问题讨论】:

  • 您只发布了您开始工作的代码 - 发布不起作用的代码怎么办...?

标签: c# asp.net


【解决方案1】:

如果您在 Url 中有 MemberId,那么 Request["MemberId "] 可以使用它,并且没有例外。

请确保您在 Request["holderName"] 中检查正确的名称

【讨论】:

    【解决方案2】:

    首先,您使用查询字符串来获取不重要的信息。如果您不希望用户看到该值,则应使用会话变量。会话保存在服务器端!

    查询字符串用法:

    Response.Redirect("Default.aspx?id=4");
    

    之后你可以在其他页面阅读:

    if (Request.QueryString.Count > 0)
        Int32 i = Convert.ToInt32(Request.QueryString("id"));
    

    会话使用情况:

    Session["id"] = 5;
    

    之后你可以在其他页面阅读:

    if (Session["id"] != null)
        Int32 i = Convert.ToInt32(Session["id"]);
    

    希望对你有帮助

    【讨论】:

    • 感谢您的解释...但是我的代码不起作用...第一部分。
    【解决方案3】:

    为了给你一个关于会话状态的简要说明,在默认配置下,它们作为活动对象存储在 IIS 工作进程(称为 InProc)中,是用户隔离的(一个用户不能访问另一个用户的会话)。您可以更改此行为以定义要存储在其他位置(如 SQL Server 数据库或状态服务器)的会话数据,方法是在配置文件中使用元素 .既然如此,webfarm 在 InProc 会话存储方面存在问题,因此在这种情况下 SQL 或 StateServer 可以解决它。

    请参阅http://msdn.microsoft.com/en-us/library/ms972429.aspx 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多