我在这里尝试的是将值传递给其他页面。当我包含以下代码时
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
答案 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。