3

我想通过查询字符串传递两个参数 cartid 和 productis。Cartid 将从会话(如果可用)生成,否则从数据库生成,产品将从先前的查询字符串中获取

我的代码是(如果要从数据库中获取购物车 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");

        }

如果要从创建的会话中获取 carid

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

                }

但是这两个查询都是错误的,它们正在生成这样的 url

http://localhost:1030/SShopping%20Website/client/ViewCartItems.aspx?CartID=id%20&%20ProductID=productid

请帮忙

4

3 回答 3

13

使用String.Format通常更容易阅读:

Response.Redirect(String.Format("ViewCartItems.aspx?CartID={0}&ProductID={1}", id, productid));

此外,它可以Response.Redirect(url, false)代替 just使用Response.Redirect(url),因此您不会得到ThreadAbortException.

来自 MSDN:

当您在页面处理程序中使用此方法来终止对一个页面的请求并开始对另一个页面的新请求时,请将 endResponse 设置为 false,然后调用 CompleteRequest 方法。如果为 endResponse 参数指定 true,则此方法会为原始请求调用 End 方法,该方法在完成时会引发 ThreadAbortException 异常。此异常对 Web 应用程序性能有不利影响,这就是为什么建议为 endResponse 参数传递 false 的原因。

阅读:响应。重定向

于 2013-09-29T16:09:12.270 回答
6

您需要将值连接到字符串中:

Response.Redirect("ViewCartItems.aspx?CartID=" + id.ToString() + "&ProductID=" + productid.ToString());
于 2013-09-29T16:08:04.357 回答
5

你在'&', 'variable name' , '='.

不要放空间。像这样写:&name=,不喜欢& name =

Response.Redirect("ViewCartItems.aspx?CartID="+id+"&ProductID="+productid);

这将起作用。

于 2015-05-28T08:31:28.660 回答