2013-11-01 5 views
-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" /> 

Codebehind가 :

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

오류는 다음과 같습니다

입력 문자열이 올바른 형식이 아니었다 .

+0

왜 Int32로 변환하고 이중으로 저장합니까? – Harrison

+0

mysql에서 나는 10 진수로 점수를 집어 넣기 때문에. 그래서 나 좀 도와 줄 생각이있어? C#에서 초보자. –

답변

0

디버거를 사용하여 어떤 값이 에 있는지 확인해야합니다.

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

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

이 라인 if(theTextBox != null)에 브레이크 포인트를 넣고 당신이 .Text에서 어떤 값 참조 :이처럼 여러 행으로 분리 논리를 끌어 경우 디버깅하기 쉬울 것입니다. 글자가있는 문자열 값인 경우 Int32에 대한 캐스트가 실패하고 사용자 입력을 오염시키는 원인을 파악해야합니다 (힌트 :이 텍스트 상자의 사용자 입력을 숫자로만 제한).

+0

감사합니다. 나는 그것을 먼저 시도한다. =) –

0

가변 점수는 double로 변환되므로 double로 변환해야합니다. 내가 잘못 했어 - - 정수가 암시 적으로 변환됩니다 텍스트 상자의 텍스트가 정수와 호환 (의 이중 또는 텍스트 또는 정수 이외의)

편집 아니라고, 또는 하나

그 아래에 언급 된 두 배.

텍스트 필드의 유효성을 검사하기 만하면됩니다. 다음은 입력 된 텍스트의 유효성을 검사하는 예제입니다. asp.net validation to make sure textbox has integer values

여전히 변수를 한 유형으로 변환 한 다음 값을 다른 유형으로 변환 할 이유가 없습니다. 그것은 효과가 있을지 모르지만 머리가 넘어서고 어떤 용도로도 사용되지 않는 것으로 보입니다.

+0

Int32는 암시 적으로 double로 변환됩니다. 이 오류는 발생하지 않습니다. 당신은 아마도 텍스트 상자에있는 텍스트의 형식을 가지고 뭔가를 할 것입니다. – Harrison

+0

@ethan Pethon, 맞습니까? 점수 부분을 비워두면이 오류가 발생합니다. 점수 부분을 채우면 오류가 없습니다. –

+0

@ 하리슨 감사합니다. 이 오류는 저장하려고 할 때 비워두면 발생합니다 –

관련 문제