if (!IsPostBack)
{
string EnquiryID = (Session["Enq_ID"].ToString());
if (EnquiryID != null)
{
int Enquiry = Convert.ToInt32(EnquiryID);
hotelOBJ.FillbyQueryEnquiry1(Enquiry, txtClientph, txtClientAddress );
}
}
有我的代码我的会话未转换为整数,错误是
“输入字符串的格式不正确。”
答案 0 :(得分: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());
}
答案 1 :(得分: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);
}
答案 2 :(得分:0)
我认为您尝试转换为int的字符串为空或包含不是数字的字符(基本上您的字符串不表示字符串形式的整数值)。这就是你收到错误信息的原因。
所以至少你必须更换你的
if (EnquiryID != null)
带
if(!string.IsNullOrWhiteSpace(EnquiryID))
如果您尝试转换变量,那么您将会知道如何转换它。
如果您尝试转换的字符串是整数,则使用Int32.TryParse()
函数来测试(并转换为整数)。