我想通过查询字符串传递两个参数cartid和productis。 Cartid将从数据库中的session(如果可用)else生成,而Product将从之前的查询sting中生成
我的代码是(如果要从数据库中获取购物车ID)
CartInfo cartinfo = new CartInfo();
cartinfo.UserName = Session["UserName"].ToString();
cartinfo.IsOrder = "0";
cartinfo.CartDate = DateTime.Now;
int id = new InsertAction().InsertData(cartinfo);
if (id!=0)
{
lblmsg.Text = "Inserted Sucessfully";
Session["CartID"] = id;
if (Request.QueryString["ProductID"] != null)
{
int productid = int.Parse(Request.QueryString["ProductID"]);
}
Response.Redirect("ViewCartItems.aspx?CartID=id & ProductID=productid");
}
如果要从创建的会话中获取cartid
if (Session["CartID"] != null)
{
string cartid;
int productid;
if (Request.QueryString["ProductID"] != null)
{
cartid = Session["CartID"].ToString();
productid = int.Parse(Request.QueryString["ProductID"]);
DataSet ds = new AddCartItem().GetCartItem(cartid, productid);
if (ds.Tables[0].Rows.Count > 0)
{
DataSet ds1 = new AddCartItem().UpdateCartItem(cartid, productid);
}
但两个查询都是错误的 正在生成这样的网址
http://localhost:1030/SShopping%20Website/client/ViewCartItems.aspx?CartID=id%20&%20ProductID=productid
请帮忙
答案 0 :(得分:9)
使用String.Format阅读通常会更容易:
Response.Redirect(String.Format("ViewCartItems.aspx?CartID={0}&ProductID={1}", id, productid));
此外,它可以使用Response.Redirect(url, false)
而非Response.Redirect(url)
,因此您无法获得ThreadAbortException
。
来自MSDN:
在页面处理程序中使用此方法终止请求时 一页并开始另一页的新请求,将endResponse设置为 false然后调用CompleteRequest方法。如果指定true 对于endResponse参数,此方法调用End方法 原始请求,抛出ThreadAbortException异常 当它完成。此异常对Web有不利影响 应用程序性能,这就是为什么传递false的原因 建议使用endResponse参数。
答案 1 :(得分:5)
您需要将值连接到字符串中:
Response.Redirect("ViewCartItems.aspx?CartID=" + id.ToString() + "&ProductID=" + productid.ToString());
答案 2 :(得分:4)
您在& name =
。
不要放空间。写得像这样:Response.Redirect("ViewCartItems.aspx?CartID="+id+"&ProductID="+productid);
,而不是像JInternalFrame
。
JPanel
这样可行。