C# if else条件未满足,但仍在运行内部代码

C# if else条件未满足,但仍在运行内部代码,c#,asp.net,if-statement,web-config,C#,Asp.net,If Statement,Web Config,这是一个非常不寻常的问题,我的if-else-if条件不起作用: 1) 我正在从web.config读取值 string validuserlist = ConfigurationManager.AppSettings["Quality"].ToString(); string safetylist = ConfigurationManager.AppSettings["Safety"].ToString(); string supervisorlist = ConfigurationManag

这是一个非常不寻常的问题,我的if-else-if条件不起作用: 1) 我正在从web.config读取值

string validuserlist = ConfigurationManager.AppSettings["Quality"].ToString();
string safetylist = ConfigurationManager.AppSettings["Safety"].ToString();
string supervisorlist = ConfigurationManager.AppSettings["Supervisors"].ToString();
2) 我正在检查当前用户是否在上述列表中,以及workorder类型是否=gridview中的类型:

该条件在第三个条件下不满足,在第三个条件下,它检查supervisorlist。我从web.config中删除了我的用户id,并且我运行了应用程序,但它仍然运行第三个条件。应该说你没有权限

如您所见,上述条件失败,但仍运行该代码:

如果您需要任何代码或逻辑理解,请在标记此问题之前询问

以下是我的情况:

if (validuserlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Quality")
{
    CheckQuality();
    if (flag == true)
    {
        ModalPopupExtender1.Show();
        TextBox TextBox1 = (TextBox)DetailsView1.FindControl("TextBox30");
        TextBox TextBox2 = (TextBox)DetailsView1.FindControl("TextBox91");
        TextBox1.Enabled = true;
        TextBox2.Enabled = true;
        DetailsView1.Visible = true;
        ModalPopupExtender2.Show();
        DetailsView2.Visible = true;
    }
    else
    {
        string message = "your user id does not have permissions to signoff WorkOrders of type" + " " + TextBox102.Text + ", please contact IT Support for Permission";
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("<script type = 'text/javascript'>");
        sb.Append("window.onload=function(){");
        sb.Append("alert('");
        sb.Append(message);
        sb.Append("')};");
        sb.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
    }
}
else if (safetylist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety")
{
    CheckSafety();
    if (flag == true)
    {
        ModalPopupExtender1.Show();
        TextBox TextBox1 = (TextBox)DetailsView1.FindControl("TextBox30");
        TextBox TextBox2 = (TextBox)DetailsView1.FindControl("TextBox91");
        TextBox1.Enabled = true;
        TextBox2.Enabled = true;
        DetailsView1.Visible = true;
        ModalPopupExtender2.Show();
        DetailsView2.Visible = true;
    }
    else
    {
        string message = "your user id does not have permissions to signoff WorkOrders of type" + " " + TextBox102.Text + ", please contact IT Support for Permission";
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("<script type = 'text/javascript'>");
        sb.Append("window.onload=function(){");
        sb.Append("alert('");
        sb.Append(message);
        sb.Append("')};");
        sb.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
    }
}
else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")
{
    if (flag == false)
    {
        ModalPopupExtender1.Show();
        TextBox TextBox1 = (TextBox)DetailsView1.FindControl("TextBox30");
        TextBox TextBox2 = (TextBox)DetailsView1.FindControl("TextBox91");
        TextBox1.Enabled = true;
        TextBox2.Enabled = true;
        DetailsView1.Visible = true;
        ModalPopupExtender2.Show();
        DetailsView2.Visible = true;
    }
    else
    {
        string message = "your user id does not have permissions to signoff WorkOrders of type" + " " + TextBox102.Text + ", please contact IT Support for Permission";
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("<script type = 'text/javascript'>");
        sb.Append("window.onload=function(){");
        sb.Append("alert('");
        sb.Append(message);
        sb.Append("')};");
        sb.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
    }
}
if(validuserlist.ToLower().Trim().IndexOf(username.ToLower().Trim())!=-1&&TextBox102.Text==“质量”)
{
检查质量();
如果(标志==真)
{
ModalPopupExtender1.Show();
TextBox TextBox1=(TextBox)DetailsView1.FindControl(“TextBox30”);
TextBox TextBox2=(TextBox)DetailsView1.FindControl(“TextBox91”);
TextBox1.Enabled=true;
TextBox2.Enabled=true;
DetailsView1.Visible=true;
ModalPopupExtender2.Show();
DetailsView2.Visible=true;
}
其他的
{
string message=“您的用户id没有签署类型为“+”+TextBox102.Text+”的工作单的权限,请联系IT支持以获取权限”;
System.Text.StringBuilder sb=新的System.Text.StringBuilder();
某人加上(“”);
sb.Append(“window.onload=function(){”);
某人加上(“警告(”);
某人附加(信息);
某人加上(“)};”;
某人加上(“”);
RegisterClientScriptBlock(this.GetType(),“alert”,sb.ToString());
}
}
else if(safetylist.ToLower().Trim().IndexOf(username.ToLower().Trim())!=-1&&TextBox102.Text==“安全”)
{
检查安全性();
如果(标志==真)
{
ModalPopupExtender1.Show();
TextBox TextBox1=(TextBox)DetailsView1.FindControl(“TextBox30”);
TextBox TextBox2=(TextBox)DetailsView1.FindControl(“TextBox91”);
TextBox1.Enabled=true;
TextBox2.Enabled=true;
DetailsView1.Visible=true;
ModalPopupExtender2.Show();
DetailsView2.Visible=true;
}
其他的
{
string message=“您的用户id没有签署类型为“+”+TextBox102.Text+”的工作单的权限,请联系IT支持以获取权限”;
System.Text.StringBuilder sb=新的System.Text.StringBuilder();
某人加上(“”);
sb.Append(“window.onload=function(){”);
某人加上(“警告(”);
某人附加(信息);
某人加上(“)};”;
某人加上(“”);
RegisterClientScriptBlock(this.GetType(),“alert”,sb.ToString());
}
}
else if(supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim())!=-1&&TextBox102.Text==“安全”| | TextBox102.Text==“质量”| | TextBox102.Text==“常规”)
{
如果(标志==false)
{
ModalPopupExtender1.Show();
TextBox TextBox1=(TextBox)DetailsView1.FindControl(“TextBox30”);
TextBox TextBox2=(TextBox)DetailsView1.FindControl(“TextBox91”);
TextBox1.Enabled=true;
TextBox2.Enabled=true;
DetailsView1.Visible=true;
ModalPopupExtender2.Show();
DetailsView2.Visible=true;
}
其他的
{
string message=“您的用户id没有签署类型为“+”+TextBox102.Text+”的工作单的权限,请联系IT支持以获取权限”;
System.Text.StringBuilder sb=新的System.Text.StringBuilder();
某人加上(“”);
sb.Append(“window.onload=function(){”);
某人加上(“警告(”);
某人附加(信息);
某人加上(“)};”;
某人加上(“”);
RegisterClientScriptBlock(this.GetType(),“alert”,sb.ToString());
}
}
(编辑:事实上,这里有点像忍者丹·奥尔洛夫斯基,因为他在我发布这篇文章的同时在评论中找到了答案。他的答案更详细。)

看起来像是一个操作顺序问题。用括号括起你的条件。像这样:

supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 
    && (TextBox102.Text == "Safety" 
        || TextBox102.Text == "Quality" 
        || TextBox102.Text == "General")
(编辑:事实上,这里有点像忍者丹·奥尔洛夫斯基,因为他在我发布这篇文章的同时在评论中找到了答案。他的答案更详细。)

看起来像是一个操作顺序问题。用括号括起你的条件。像这样:

supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 
    && (TextBox102.Text == "Safety" 
        || TextBox102.Text == "Quality" 
        || TextBox102.Text == "General")

因此,在注释中发现一些新信息后,我们可以解决if条件的问题

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")
这基本上是说:

如果监督员在此列表中且TextBox102等于“安全”,则运行该条件。或者,如果TextBox102等于“质量”,则运行条件。或者,如果TextBox102等于“常规”,则运行条件

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")
您似乎想知道主管是否在该列表中,以及文本框是否等于其中之一,因此@Aidin建议,您的if语句应该如下所示:

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && (TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General"))
注意文本框的每个复选框周围都有一组额外的括号。这会将IF语句转换为:

如果主管在列表中,且TextBox102=安全或TextBox102=一般或TextBox102=质量,则运行条件

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")

因此,在注释中发现一些新信息后,我们可以解决if条件的问题

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")
这基本上是说:

如果监督员在此列表中且TextBox102等于“安全”,则运行该条件。或者,如果TextBox102等于“质量”,则运行条件。或者,如果TextBox102等于“常规”,则运行条件

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General")
您似乎想知道主管是否在该列表中,以及文本框是否等于其中之一,因此@Aidin建议,您的if语句应该如下所示:

else if (supervisorlist.ToLower().Trim().IndexOf(username.ToLower().Trim()) != -1 && (TextBox102.Text == "Safety" || TextBox102.Text == "Quality" || TextBox102.Text == "General"))
注意文本框的每个复选框周围都有一组额外的括号。这个狗屎