即使我的C#代码正确解析,我也会收到FormatException

时间:2015-06-29 23:31:44

标签: c# .net parsing entities formatexception

我有一行代码作为“保存”按钮的一部分运行。 Save按钮将一些数据存储到我的数据库中。保存的部分数据是每个项目的排名。我在前端为每个项目分配一个等级,然后将其解析出来并存储到数据库中。这是有问题的代码:

using(CCGEntities db = new CCGEntities())
{
    foreach(DataGridItem dgi in uxCustomSetList.Items)
    {
        int dataKey = (int)uxCustomSetList.DataKeys[dgi.ItemIndex];
        var temp = db.CustomSetAwardSets.FirstOrDefault(s => s.CustomSetAwardSetID == dataKey);
        temp.AwardSetComments = ((TextBox)dgi.FindControl("txtComments")).Text.Trim();
        temp.Rank =  Int32.Parse(((TextBox)dgi.FindControl("txtRank")).Text);
        db.SaveChanges();
    }
}

问题在于这一行:

temp.Rank = Int32.Parse(((TextBox)dgi.FindControl("txtRank")).Text);

每个项目的排名都会成功保存到数据库中,但我会得到一个FormatException错误屏幕。有什么想法是什么问题?如果将数据存储到数据库中,解析显然可以正常工作,那么为什么它会抱怨格式错误呢? temp.Rank是一个int?顺便说一句。

1 个答案:

答案 0 :(得分:1)

一般情况下,尤其是在使用来自UI的输入时,使用TryParse比使用Parse更好,因为检查错误(在我看来)更清晰,并给程序员对不同可能的输入值进行更高级别的控制。

您的特定错误可能是因为控件的text属性为空或null,这会在int.Parse调用时抛出FormatError异常。