单击提交按钮而不键入number in my text box
,
我收到错误消息
FormatException未被用户代码处理,输入字符串不在 格式正确。
这是我的代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
int section = Convert.ToInt32(lstSectionNumber.SelectedValue);
double ticketQuantity = Convert.ToInt32(txtNumberOfTickets.Text);
}
我知道我可以验证文本框,所以我必须输入数字,但是任何人都可以引导我找到正确的方法吗?
谢谢,我一直只使用C#一周。
答案 0 :(得分:3)
尝试使用int.TryParse方法。
protected void btnSubmit_Click(object sender, EventArgs e)
{
int section = 0; //or your default value
double ticketQuantity = 0d; //Or your default value
int.TryParse(lstSectionNumber.SelectedValue, out section);
double.TryParse(txtNumberOfTickets.Text, out ticketQuantity);
}
答案 1 :(得分:0)
private void btnSubmit_Click(object sender, EventArgs e)
{
int section;
int.TryParse(lstSectionNumber.SelectedItem.ToString(),out section);
MessageBox.Show(section.ToString());
}
答案 2 :(得分:0)
如果你想为此抛出异常,试试这个:
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
int section = Convert.ToInt32(lstSectionNumber.SelectedValue);
double ticketQuantity = Convert.ToInt32(txtNumberOfTickets.Text);
}
catch (FormatException ex)
{
// put an error message.
}
}
如果用户输入非数字值,则会抛出异常。
答案 3 :(得分:0)
尝试在TryParse
中使用返回布尔值,如下所示:
protected void btnSubmit_Click(object sender, EventArgs e)
{
int section = Convert.ToInt32(lstSectionNumber.SelectedValue);
double ticketQuantity;
if(!int.TryParse(txtNumberOfTickets.Text, out section))
{
//Some error handling here...like MessageBox.Show("Please enter a valid ticket quanity");
}
//Do you regular logic here...
}
旁注:为什么你的ticketQuantity
是一个双倍但你转换为int?另请注意,根据1stSectionNumber
用作源的内容,您可能会遇到类似的转换错误。处理用户输入时,通常最好包装Try-Catch,以便您的应用程序不会崩溃。甚至带有错误的MessageBox通常也比崩溃到桌面更好。
答案 4 :(得分:0)
<tr>
<td style="width:30%; text-align:right;">
<asp:Label ID="lbltext" runat="server">Text Box</asp:Label>
</td>
<td style="width:30%; text-align:left;">
<asp:TextBox ID="txtbox1" runat="server"
ValidationGroup="Sample"
Width="100%" >
</asp:TextBox>
</td>
<td>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server"
ControlToValidate="txtbox1"
Display="Dynamic"
ErrorMessage="Only Numbers"
ForeColor="Red"
ValidationExpression="^[0-9]*$">
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server"
ControlToValidate="txtbox1"
Display="Dynamic"
ErrorMessage="Field cannot be left blank"
ForeColor="Red">
</asp:RequiredFieldValidator>
</td>
</tr>
将 RegularExpression 添加到验证 文本框在文本框中获取仅数字,并添加 required字段到文本框,以便不允许传递空字符串。
通过这种方式你实现了这个
如果你不想使用RegularExpression和RequiredField Validators,你可以改变你的代码,如下所示
protected void btnSubmit_Click(object sender, EventArgs e)
{
int section;
int.TryParse(ddl1.SelectedValue, out section);
double ticketQuantity;
double.TryParse(txtbox1.Text, out ticketQuantity);
}
通过此,您将 Section
的值视为 0
, ticketQuantity
强> 0.0
强>
答案 5 :(得分:0)
int section ;
int.TryParse(lstSectionNumber.SelectedValue,out section);
double ticketQuantity;
double.TryParse(txtNumberOfTickets.Text,out ticketQuantity);
如果出现错误,您将获得0或0.0而不会抛出错误。