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