所以我的代码工作得很好,一切都很好。但是当没有任何内容放入textbox1和textbox2并且我点击提交按钮时,我收到错误索引超出了数组的范围。发现错误。
但是我尝试输入一个else来捕获错误并将标签更改为“无法查找”,而不是服务器错误但它不起作用,为什么会这样?
这是我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
string CustomerID = TextBox2.Text;
// 1off
WebReference.WebServiceTyped ws = new WebReference.WebServiceTyped();
WebReference.CheckPartStatus PQ = new WebReference.CheckPartStatus();
string Parts = "";
string PartNumber = Parts;
string PriceSum = null;
long QtySum = 0;
PartNumber = TextBox1.Text;
if (PartNumber == TextBox1.Text)
{
PQ = ws.CheckPartNumberStatus(PartNumber, CustomerID, "1,6,8,9,112", "", "", "");
PriceSum = String.Format(PQ.Parts[0].Cost.ToString(), "####.00");
Label1.Text = PriceSum;
}
else
{
Label1.Text = "Cannot Find";
}
}
}
答案 0 :(得分:0)
你有这一行:
PartNumber = TextBox1.Text;
紧接着就是:
if (PartNumber == TextBox1.Text)
只要您将该值设置为PartNumber
,这将永远是真的。因此,您永远不会输入else
声明。
在使用之前,您应该检查PQ
是否包含任何内容:
if (PQ.Parts.Length>0)
{
PriceSum = String.Format(PQ.Parts[0].Cost.ToString(), "####.00");
Label1.Text = PriceSum;
}
else
{
Label1.Text = "Cannot Find";
}
这会遇到很多问题:客户ID不好或部件号错误
答案 1 :(得分:0)
也许当CustomerId中没有声明Text时,CheckPartNumberStatus失败,尝试捕获空输入:
string CustomerID = TextBox2.Text;
if(CustomerId == string.Empty){
//error display
return;
}