2016-12-06 3 views
1

Это действительно необычный вопрос, который я имею, что я, если еще, если условие не работает: 1) Я читаю значение из web.configесли иное условие не соблюдается, но все еще работает код внутри

string validuserlist = ConfigurationManager.AppSettings["Quality"].ToString(); 
string safetylist = ConfigurationManager.AppSettings["Safety"].ToString(); 
string supervisorlist = ConfigurationManager.AppSettings["Supervisors"].ToString(); 

2) Я проверяю, находится ли текущий пользователь в указанном выше списке, и если тип рабочего заказа = тип из gridview:

Условие не выполняется в третьем условии, когда он проверяет список супервизоров Я удалил своего пользователя id из web.config, и я запускаю приложение, которое все еще выполняет третье условие. предположим, что у вас нет разрешений.

enter image description here

enter image description here

, как вы можете видеть выше условие не выполняется, но он все еще работает этот код:

enter image description here

enter image description here пожалуйста, помогите, если вам нужен любой код или логическое понимание пожалуйста, спросите перед тем, как пометить этот вопрос.

вот как мое состояние выложено:

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()); 
    } 
} 
+0

Вы делаете 'if' then' else', а затем 'else if', а затем делаете более странные вещи.Проверьте, как использовать 'if' – Aidin

+0

Как отметил @Aidin, структура вашего оператора if/else отключена. ELSE IF или ELSE могут следовать за IF, но если у вас есть ELSE, это должен быть конец инструкции If/Then/Else. Итак, начните с вашего IF, следуйте с ELSE IF, и закончите с ELSE - обратите внимание: вы можете иметь только один ELSE. –

+0

@Aidin в чем-то часть моего кода. Я использую другое условие if и else, каждый из которых имеет условие if и else внутри него, плохо размещает образец кода. – CodeMan

ответ

3

Итак, после того, как в комментариях была обнаружена новая информация, мы можем решить, что не так с условием if.

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

Это в основном говорят:

Если руководитель находится в этом списке и TextBox102 равно «безопасности» запустить состояние. ИЛИ, если TextBox102 равен «Качество», запустите условие. ИЛИ, если TextBox102 равен «Общее», запустите условие.

Похоже, вы хотите знать, если руководитель находится в списке И если Textbox равен одному из тех, так как предполагает @Aidin, ваш IF заявление должно выглядеть следующим образом:

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

Обратите внимание на дополнительный набор круглых скобок вокруг каждой проверки TextBox. Это превращает ваш отчет IF в:

Если диспетчер находится в списке AND TextBox102 = Безопасность ИЛИ TextBox102 = Общее ИЛИ TextBox102 = Качество, запустите условие.

+0

спасибо, что я видел комментарий Айдина и понял это, но очень ценю помощь, ничего себе, я никогда не знал, что скобка имела такое влияние :) – CodeMan

1

(редактирование: На самом деле, вроде ninja'd Дэн Орловского здесь, как он понял, ответ в комментариях примерно в то же время я отправил это Его ответ более подробно.)

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") 
+0

спасибо за ответ приятель. – CodeMan

+0

Упрощение для ясности кода. –