如何将viewstate值转换为整数变量

时间:2014-03-31 13:27:52

标签: c# asp.net viewstate

我有以下代码

private void ShowBill(int Prof_id,int Plan_id)
{
    dt = new DataTable();
    dt = objmatportal.CreateBill(Prof_id, Plan_id);
    if (dt.Rows.Count > 0)
    {
        lblbillto.Text = dt.Rows[0]["CONT_FNAME"].ToString() + " " + dt.Rows[0]["CONT_LNAME"].ToString() + "" + dt.Rows[0]["CONT_STATE"].ToString() + "" + dt.Rows[0]["CONT_CITY"].ToString();
        lblpayTo.Text = dt.Rows[0]["PAYTO"].ToString();
        lblDescription.Text = dt.Rows[0]["PLAN_NAME"].ToString();            
        lblAmount.Text ="Rs. "+string.Format("{0:0.00}",dt.Rows[0]["AMOUNT"]);
        lblTax.Text ="Rs. " +string.Format("{0:0.00}", dt.Rows[0]["VAT"]);
        LblTotal.Text ="Rs. "+ string.Format("{0:0.00}", dt.Rows[0]["TOTAL"]);
        ViewState["Total"] = dt.Rows[0]["TOTAL"].ToString();
    }
    else
    {
        Response.Write("Something gone wrong");
    }

}

关于上述方法 在ViewState [" Total"] = dt.Rows [0] [" TOTAL"]。ToString(); 我已将值分配给ViewState [" Total"]

但是当我运行以下方法时,它会显示错误"指定的演员表无效。"在以下一行

  

Total =(int)(ViewState [" Total"]);

public int TotalwithConvenience()
{
        int Total=0;
        decimal percentage = decimal.Parse(ViewState["CARD_PERCENT"].ToString());
        Total = (int)(ViewState["Total"]);
        decimal TDR = Total * percentage / 100;
        TDR = Math.Round(TDR);
        int tdrchrges = Convert.ToInt32(TDR.ToString());
        ViewState["convenience"] = tdrchrges;
        Total = Total + tdrchrges;
        return Total;

}

需要帮助来解决这个问题

4 个答案:

答案 0 :(得分:2)

试试这个:

Total = Convert.ToInt32(ViewState["Total"]);

答案 1 :(得分:0)

Convert.Tointeger16(ViewState["convenience"]).ToString());

答案 2 :(得分:0)

您使用

ViewState["Total"] = dt.Rows[0]["TOTAL"].ToString();

将值保存在" Total"在ViewState中。这意味着您存储字符串

当您使用(int)(ViewState["Total"])时,您告诉编译器您在那里存储了一个整数,因此它在运行时失败(字符串不是整数)。

两种可能的解决方案:

  • 正如其他人提到的那样,使用Total = Convert.ToInt32(ViewState["Total"]);来阅读
  • 仅使用ViewState["Total"] = dt.Rows[0]["TOTAL"];(不使用.ToString())来存储它(如果该值确实是整数)

答案 3 :(得分:0)

我也遇到了同样的问题,但是下面的声明解决了它

Convert.ToInt32(ViewState["Total"]);