标记:
<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
错误是:
输入字符串的格式不正确。
答案 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
尽管如此,我认为没有理由将您的变量转换为一种类型,然后将该值转换为其他类型。它可能会起作用,但会有更多的问题,它似乎没有任何用途。