C# 我的错误是输入字符串的格式不正确

C# 我的错误是输入字符串的格式不正确,c#,asp.net,C#,Asp.net,标记: 代码隐藏: double score = Convert.ToInt32(((TextBox)gridEstateScoreItem.FooterRow.FindControl("txtScore")).Text); //error start here 错误是: 输入字符串的格式不正确 您需要使用调试器来确定文本框的文本属性中的值。如果将逻辑分成多行,则调试会更容易,如下所示: TextBox theTextBox = gridEstateScoreItem.FooterRow.

标记:


代码隐藏:

double score = Convert.ToInt32(((TextBox)gridEstateScoreItem.FooterRow.FindControl("txtScore")).Text); //error start here
错误是:

输入字符串的格式不正确


您需要使用调试器来确定
文本框
文本
属性中的值。如果将逻辑分成多行,则调试会更容易,如下所示:

TextBox theTextBox = gridEstateScoreItem.FooterRow.FindControl("txtScore") as TextBox;

if(theTextBox != null)
{
    double score = Convert.ToInt32(theTextBox.Text);
}

如果(文本框!=null)在
行上放置一个断点,然后查看
.Text
中的值。如果是带字母的字符串值,则转换为
Int32
将失败,您需要找出是什么污染了您的用户输入(提示:此文本框的用户输入仅限于数字)。

您的可变分数转换为双精度,因此您应该转换为双精度

要么是这样,要么文本框中的文本与整数不兼容(它是一个双精度或文本,或者不是整数)

编辑-我错了-整数将隐式转换为双精度,如下所述

您只需验证文本字段。下面是验证输入文本的示例。


不过,我看不出有任何理由将变量转换为一种类型,然后将值转换为另一种类型。它可能会工作,但会有更多的过头,而且它似乎没有任何用途。

为什么要转换为Int32并存储为双精度?因为在mysql中,我将分数设置为十进制。你有什么办法帮我吗?我是c#中的新手。Int32将隐式转换为双精度。这不会导致那个错误。您可能已经了解了文档中文本的格式textbox@ethan佩顿,是吗?如果我将分数部分留空,则会发生此错误。如果我把分数填进去,就不会有错误。@harrison,谢谢。只有在尝试保存时将其保留为空时,才会发生此错误it@MissMargrateJeba如果文本框为空,则会出现错误,因为它的格式不正确,无法转换为数字。在转换文本之前,您需要对文本进行一些验证。@harrison,好的,那么如何进行验证呢?我在这方面真的是新手。