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

I'm getting a FormatException even though my C# code parses correctly

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

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 是一个整数?顺便说一句。

一般来说,尤其是当使用来自 UI 的输入时,使用 TryParse 比使用 Parse 更好,因为它更容易检查错误(在我的opinion) 并使程序员能够更好地控制不同的可能输入值。

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