将值传递给页面

时间:2010-05-05 10:19:55

标签: c# asp.net

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

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工作......你们可以解释一下这种行为吗?

P.S。任何人都可以用非专业人士的话说明SessionId及其用法。

感谢你,

Indranil

3 个答案:

答案 0 :(得分:1)

如果你在Url中有MemberId,那么它将由Request [“MemberId”]提供,并且没有例外。

请确保您在Request [“holderName”]

中检查正确的名称

答案 1 :(得分:0)

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

Querystring用法:

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"]);

希望这有助于你

答案 2 :(得分:0)

为了简要说明会话状态,默认配置它们作为活动对象存储在IIS工作进程(称为InProc)中,由用户隔离(一个用户无法访问另一个用户的会话)。您可以通过在配置文件中使用元素来更改此行为以定义要存储在SQL Server数据库或State Server等其他位置的会话数据。因此,webfarms存在InProc会话存储问题,因此在这种情况下,SQL或StateServer可以解决它。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms972429.aspx