错误:无法将类型为“System.Int32”的对象强制转换为“System.String”

我已完成编码注册页面,登录,现在UpdateCustomer页面有错误 – 背景信息:我使用Microsoft Access作为数据源

LabelState.Text = (string)Session["sState"]; LabelPostalCode.Text = (string)Session["sPostalCode"]; LabelContactNumber.Text = (string)Session["sContactNumber"]; LabelEmail.Text = (string)Session["sEmail"]; LabelPassword.Text = (string)Session["sPassword"]; 

这里的一切都很好,除了LabelContactNumber.Text = (string)Session["sContactNumber"]

我相信这是因为只有Access中的ContactNumber被设置为Int,其余的是Text,因此当我使用(字符串)时没有错误。

 LabelContactNumber.Text = (Session["sContactNumber"] != null) ? Session["sContactNumber"].ToString() : string.Empty //or whatever default value your want; 
 int contactNumber = -1; if( int.TryParse( Session[ "sContactNumber" ], out contactNumber ) == false ) { LastContactNumber = "N/A"; } else { LastContactNumber = contactNumber.ToString( ); } 

问题:它失败了,因为您将Integer类型分配给String。 在这里,您需要使用显式转换将Integer类型转换为String类型。

解决方案:如果要检查是否可以在将其分配到TextBox之前将联系号码解析为int,请使用TryParse方法

 int contact; if(int.TryParse(Session["sContactNumber"],out contact)) LabelContactNumber.Text = contact.ToString(); else LabelContactNumber.Text = "Invalid Contact!";