0

入力文字列が正しい形式ではないというこのエラーが引き続き発生します。なぜこれが起こっているのか、私にはわかりません。データベースに書き込もうとしていますが、郵便番号は数字です。文字列に変更しようとしましたが、非クエリを実行しているときにパラメーターが失われます。

Input string was not in a correct format.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error: 


Line 130:               param.DbType = DbType.Int32;
Line 131:               param.Direction = ParameterDirection.Input;
Line 132:               param.Value = Int32.Parse(shipZipCodeTxt.Text);
Line 133:                       
Line 134:               comm.Parameters.Add(param); 

Source File:     Line: 132 

Stack Trace: 


[FormatException: Input string was not in a correct format.]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +7472247
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119
   System.Int32.Parse(String s) +23
   ASP.finals_signup_aspx.SubmitForm(Object sender, EventArgs e) in e:\ectserver\ADELEO10\finals\signup.aspx:132
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
4

1 に答える 1

10

例外は明らかです。テキストボックスには、解析ルーチンによって除外できず、整数に変換できない文字が含まれています

代わりに試すことができます

int result;
if(Int32.TryParse(shipZipCodeTxt.Text, out result))
    param.Value = result;
else
    Response.Write("Please type a numeric value");

少なくともこのアプローチは例外を回避します。

別の可能性は、aspx マークアップへのRangeValidatorコントロールです。

<asp:RangeValidator id="RangeValidator1" runat="server" 
     ControlToValidate="shipZipCodeTxt" Type="Integer"
     ErrorMessage="Please type a valid zip code">
     MaximumValue="999999999" MinimumValue="0"
</asp:RangeValidator>

RequiredFieldValidator を追加して、空のエントリを回避することもできます

<asp:RequiredFieldValidator id="RequiredFieldValidator1"  
  runat="server" ErrorMessage="Please type a zip code" 
  ControlToValidate="shipZipCodeTxt" 
</asp:RequiredFieldValidator>
于 2013-06-08T22:25:58.857 に答える