Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 索引超出了数组的边界。抓住错误_C#_Asp.net - Fatal编程技术网

C# 索引超出了数组的边界。抓住错误

C# 索引超出了数组的边界。抓住错误,c#,asp.net,C#,Asp.net,所以我的代码运行良好,一切正常。但是当textbox1和textbox2中没有任何内容并且我点击submit按钮时,我收到的错误索引超出了数组的界限。抓住一个错误 然而,我尝试输入一个else来捕获错误,并将标签更改为“找不到”,而不是服务器错误,但它不工作,这是为什么 这是我的密码: protected void Button1_Click(object sender, EventArgs e) { string CustomerID = TextBox2.Text; //

所以我的代码运行良好,一切正常。但是当textbox1和textbox2中没有任何内容并且我点击submit按钮时,我收到的错误索引超出了数组的界限。抓住一个错误

然而,我尝试输入一个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";
    }
}

}
你有这一行:

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或错误的零件号

可能当CustomerId中没有声明文本时,CheckPartNumberStatus失败,请尝试捕获空输入,如下所示:

string CustomerID = TextBox2.Text;
if(CustomerId == string.Empty){
  //error display
  return;
}

PartNumber=TextBox1.Text;如果(PartNumber==TextBox1.Text){
…这肯定毫无意义。您将
TextBox1.Text
分配给
PartNumber
,然后立即检查它们是否相等???您应该更明确地说明“它不起作用”的含义。也就是说,您永远不会进入
else
子句,因为
if
表达式只是比较一个变量和刚刚用于分配给该变量的属性。可以保证它们始终相等。最简单的方法是检查文本框值,查找如何使用
字符串。IsNullOrEmpty
函数如果主代码块中有条件的检查,则无需添加即可省去很多麻烦。如果先检查..或者如果两个文本框长度均为
=0,则最好添加一些错误弹出的消息框
开始使用调试器,远离旧的方法