我有一行代码作为“保存”按钮的一部分运行。 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?顺便说一句。
答案 0 :(得分:1)
一般情况下,尤其是在使用来自UI的输入时,使用TryParse
比使用Parse
更好,因为检查错误(在我看来)更清晰,并给程序员对不同可能的输入值进行更高级别的控制。
您的特定错误可能是因为控件的text属性为空或null
,这会在int.Parse
调用时抛出FormatError异常。