将文本框值转换为int

时间:2015-07-09 09:33:03

标签: c# asp.net

每当我从Textbox分配一个整数值到变量时,我都会收到以下错误。

GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);           
int quantity = Convert.ToInt32(((TextBox)row.FindControl("txtQuantity")).Text);            
ShoppingCart.Instance.SetItemQuantity(productId, quantity);

我在以下代码的第二行收到错误:

GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);           
int quantity = Convert.ToInt32(((TextBox)row.FindControl("txtQuantity")).Text);            
ShoppingCart.Instance.SetItemQuantity(productId, quantity);

例外是

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

2 个答案:

答案 0 :(得分:2)

如果字符串参数不是数字,方法Convert.ToInt32将抛出异常。

例如,在表单初始化时,控件的值肯定是string.empty,因此调用将抛出。

尝试在转换之前测试该值:

GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
int quantity;
string sQuantity = ((TextBox)row.FindControl("txtQuantity")).Text;
if(int.TryParse(sQuantity, out quantity))
{
    ShoppingCart.Instance.SetItemQuantity(productId, quantity);
}
else
{
    // do whatever you want if the textbox doesnt contains an int
    // for example:
    ShoppingCart.Instance.SetItemQuantity(productId, 0);
}

答案 1 :(得分:0)

不使用Convert.ToInt32()直接转换为数字,而是使用int.TryParse()`。

int result=0;

if(int.TryParse(((TextBox)row.FindControl("txtQuantity")).Text,out result))
 {          
 ShoppingCart.Instance.SetItemQuantity(productId, quantity);

 }