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

时间:2013-11-01 02:00:49

标签: c# asp.net

标记:

<asp:TextBox ID="txtScore" runat="server" CssClass="text_50" MaxLength="200" Text=""></asp:TextBox>

<asp:MaskedEditExtender ID="maskedSeq" runat="server" TargetControlID="txtScore" Mask="999"
    MessageValidatorTip="true"
    OnFocusCssClass="MaskedEditFocus"
    OnInvalidCssClass="MaskedEditError"
    MaskType="Number"
    InputDirection="RightToLeft"
    AcceptNegative="None" 
    ErrorTooltipEnabled="True"
    PromptCharacter=""
    AutoComplete="False" /> 

代码隐藏:

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

错误是:

  

输入字符串的格式不正确。

2 个答案:

答案 0 :(得分:0)

您需要使用调试器来确定Text的{​​{1}}属性中的值。如果将逻辑分成多行,将更容易调试,如下所示:

TextBox

TextBox theTextBox = gridEstateScoreItem.FooterRow.FindControl("txtScore") as TextBox; if(theTextBox != null) { double score = Convert.ToInt32(theTextBox.Text); } 行上设置一个断点,看看if(theTextBox != null)中的值是多少。如果它是带字母的字符串值,则转换为.Text将失败,您需要弄清楚污染您的用户输入的内容(提示:将此文本框的用户输入限制为仅数字)。

答案 1 :(得分:0)

您的变量分数被转换为double,因此您应该转换为double。

它要么是,要么文本框中的文本与整数不兼容(它是双重或文本或整数以外的东西)

编辑 - 我错了 - 如下所述,整数将被隐式转换为double。

您只需验证文本字段即可。以下是验证输入文本的示例。 asp.net validation to make sure textbox has integer values

尽管如此,我认为没有理由将您的变量转换为一种类型,然后将该值转换为其他类型。它可能会起作用,但会有更多的问题,它似乎没有任何用途。