-4
if (!IsPostBack)
{
    string EnquiryID = (Session["Enq_ID"].ToString());

    if (EnquiryID != null)
    {
        int Enquiry = Convert.ToInt32(EnquiryID);

        hotelOBJ.FillbyQueryEnquiry1(Enquiry, txtClientph, txtClientAddress );
    }
}

有我的代码我的会话没有转换为整数错误是

“输入字符串的格式不正确。”

4

3 回答 3

3

该错误表明在任何情况下都可能存在某些字符无法转换为整数,例如1234ab包含ab无法转换为整数的字符。

你可以做的是:

bool result = Int32.TryParse(Session["Enq_ID"].ToString(), out number);

if (result)
{
    hotelOBJ.FillbyQueryEnquiry1(number, txtClientph, txtClientAddress );
}
else
{
    Console.WriteLine("Attempted conversion of '{0}' failed.",
                       Session["Enq_ID"].ToString());
}
于 2013-05-30T04:44:46.057 回答
0

我认为您尝试转换为 int 的字符串是空的,或者它包含不是数字的字符(基本上您的字符串不代表字符串形式的整数值)。这就是您收到该错误消息的原因。

所以至少你必须更换你的

if (EnquiryID != null) 

if(!string.IsNullOrWhiteSpace(EnquiryID))

这就是你如何知道如果你尝试转换变量它至少有一些东西要转换。

如果您尝试转换的字符串是整数,或者使用Int32.TryParse()函数来测试(并转换为整数)。

于 2013-05-30T04:57:55.387 回答
0

使用 Int32.Parse()。解析时要注意 FormatException,最好先使用 TryParse 或将 TryParse 包装在扩展方法中。还要更改您的 if 语句。如果您的查询字符串参数丢失,您现在拥有它的方式可能会导致 NullReferenceException。

if (!IsPostBack)
{
 if (Session["Enq_ID"] != null)
 {
 string EnquiryID = Session["Enq_ID"].ToString();
 if (EnquiryID.IsValidInt32())
   {
   int Enquiry =Int32.Parse(EnquiryID);
   hotelOBJ.FillbyQueryEnquiry1(Enquiry, txtClientph, txtClientAddress );
   }
 }
}

扩展方法...

 public static bool IsValidInt32(this string value)
 {
     int result;
     return int.TryParse(value, out result);
 }
于 2013-05-30T04:53:34.137 回答