每当我从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.
答案 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);
}