我以前用PHP做过这个,现在我想用C#做。我想我可能走在正确的轨道上,但在此过程中出现了问题。
我所拥有的是“创建订单”页面,其中包含用户想要购买的一篮子商品。在此页面上,他们可以按名称或sku搜索产品,如果输入的内容有效,则会显示结果的网格视图。然后,他们可以导航到添加/更新页面,在那里他们可以将新产品添加到购物篮或者编辑/更新已经存在的产品。这会将他们带回到购物篮页面。
在“创建订单”页面上,我根据是否在网址查询字符串中找到购物车ID来设置带有购物车ID的会话变量:
protected void CreateSessionVariable()
{
string session = "";
if (Request.QueryString["CartID"] != "" & Request.QueryString["CartID"] != null)
{
session = Request.QueryString["CartID"];
Session["CartValue"] = session;
}
else
Session["CartValue"] = "";
}
我接着称这是Page_Load函数:
if (!Page.IsPostBack)
{
BindBasketGrid();
//call function
if (Session["CartValue"] != "" & Session["CartValue"] != null)
{
string CartCode = Request.QueryString["CartID"];
CartIDLbl.Visible = true;
CartIDLbl.Text += CartCode;
}
else
CreateSessionVariable();
}
在添加/更新页面的Page_Load中,这就是我正在调用的内容(它在内部调用!Page.IsPostBack:
if (Session["CartValue"] != "" & Session["CartValue"] != null)
{
string CartCode = Session["CartValue"].ToString();
CartIDLbl.Visible = true;
CartIDLbl.Text += CartCode;
}
事情有一段时间了 - 会话变量从“创建订单”页面成功传递到“添加/更新”页面。但是,当返回Create Order页面时,不再设置会话变量。
我的设置不正确吗?
答案 0 :(得分:0)
您使用的&
使条件Session["CartValue"] != "" & Session["CartValue"] != null
成为按位AND。
在C#中,您需要&&
来执行AND:
if (Session["CartValue"] != "" && Session["CartValue"] != null
这句话可以更简单地写成:
string s = Session["CartValue"] as string;
if (!string.IsNullOrEmpty(s))
答案 1 :(得分:0)
您是否确定会话变量 CartValue 是否在“创建订单”页面中写得很好并且是否发生了生成会话变量的条件?
我建议您检查以外的会话变量的值!IsPostback条件:
//Create a private variable.
private string CartValue;
protected void Page_Load(object sender, EventArgs e)
{
//Check your session variable "will be empty if the session variable is null".
CartValue = Session["CartValue"] != null && !string.IsNullOrEmpty(Session["CartValue"].ToString()) ? Session["CartValue"].ToString() : "";
if (!IsPostBack)
{
//Your code...
}
}
答案 2 :(得分:0)
检查会话变量,如 -
Session["CartValue"] != "" & Session["CartValue"] != null
错了。
可能的意外参考比较;要获得值比较,请将左侧投射到键入' string'。您应该检查Session变量是否为NULL。如果不为NULL,则会话变量的值为空或空。
if (Session["CartValue"] != null && !string.IsNullOrEmpty(Session["CartValue"].ToString())){
// your code..
}