-2

标记:

<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

错误是:

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

4

2 回答 2

0

Text您需要使用调试器来确定TextBox. 如果将逻辑分成多行,调试会更容易,如下所示:

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

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

在线上放一个断点if(theTextBox != null),看看你有什么价值.Text。如果它是一个带有字母的字符串值,那么强制转换Int32将失败,您需要弄清楚是什么污染了您的用户输入(提示:将此文本框的用户输入限制为数字)。

于 2013-11-01T02:05:46.487 回答
0

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

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

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

您只需要验证您的文本字段。这是验证输入文本的示例。 asp.net 验证以确保文本框具有整数值

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

于 2013-11-01T02:05:58.087 回答