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

时间:2014-01-15 13:07:18

标签: c# javascript database ms-access error-handling

我已完成编码注册页面,登录,现在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,因此我使用时没有错误(字符串)。

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

LabelContactNumber.Text = (Session["sContactNumber"] != null)
                              ? Session["sContactNumber"].ToString()
                              : string.Empty //or whatever default value your want;

答案 2 :(得分:0)

int contactNumber = -1;
if( int.TryParse( Session[ "sContactNumber" ], out contactNumber ) == false )
{
    LastContactNumber = "N/A";
}
else
{
    LastContactNumber = contactNumber.ToString( );
}