-5

私が持っている前のページで

protected void SqlCheckout_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
    string CustID;

    if (e.Exception == null)
    {
        CustID = e.Command.Parameters["@CustomerID"].Value.ToString();
        Response.Redirect("Payment.aspx?id=" + CustID);
    }
}

次に、私の支払いページで

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
    int intCustID;
    int intOrderID;

    intCustID = int.Parse(Request.QueryString["CustomerID"]);

    //save shopping cart
    ShoppingCart objCart;

    //retreive shoppping cart from session
    objCart = (ShoppingCart)Session["shoppingCart"];
    //the shopping cart cannot be empty
    if (objCart != null)
    {
        //save Cart
        intOrderID = objCart.SaveCart(intCustID);
        e.Values["OrderID"] = intOrderID;
        Session["OrderID"] = intOrderID;

    }
    else
    {
        e.Cancel = true;
    }
}    

チュートリアルの編集に従っています。これにより、データベースにデータを挿入できます。何らかの理由で、このコード行で、入力文字列が正しい形式ではないというエラーが表示されます。編集:および「値をnullにすることはできません」...任意のヒント?

4

4 に答える 4

3

クエリ文字列パラメーターidが整数ではありません。

パラメータの有効性が不明な場合は、代わりに TryParse を使用してください。

int intCustId;
if(int.TryParse(Request.QueryString["id"], out intCustId)
{
  // Do stuff
}
else
{
  // Handle error
}
于 2013-06-05T15:06:00.203 に答える
1

まず、 がRequest.QueryString["id"]null または空でないことを確認します。

int intCustID  = string.IsNullOrEmpty(Request.QueryString["id"]) ? 0 : int.Parse(Request.QueryString["id"]);

この意志:

  • あなたRequest.QueryString["id"]がnullまたは空かどうかを確認してください。
  • はいの場合はゼロを返し、それ以外の場合は文字列を解析してint
  • 解析されintた値をに割り当てますintCustID

次のものも使用できます。

int intCustID  = Convert.ToInt32(Request.QueryString["id"]);
于 2013-06-05T15:05:58.687 に答える