2016-02-12 17 views
0

原諒我的模糊的描述後來 '如果' 條件得到C#中的 '警告' 消息之前稱爲

C#代碼:

if(listCount <= minCountRequired) 
{ 
    DisplayError(errMsgForLessCount); // Calls scriptmanager to display alert. 
} 

if(!ConfirmFromUser) // asks for User confirmation to continue... getting called first 
{ 
    //perform some actions... not imp... 
} 

方法ConfirmFromUser

private bool ConfirmFromUser 
{ 
    string confirmValue = Request.Form["confirm_value"]; 
    if(confirmValue == "Yes") 
      return true; 
    else 
      return false; 
} 

Issue:第二個'if'條件越來越在執行網頁時首先進行填充。由此我不是指第二個內部的內容,只是條件... 如果條件比第二個IF條件更晚執行,則第一個內部的語句。

問題?問題是第一次使用Javascript來顯示警報,而且我們使用ScriptManager調用它,而後者是Request.Form? 一致性問題的種類?

+0

第二個如果只在第一個是真的時才執行? –

+0

當您設置斷點並逐句通過代碼時會發生什麼?..?請告訴我們。?也就是'listCount && minCountRequired'的值 – MethodMan

+0

第二個應該只在第一個是false的時候執行..還有更多的其他的如果與第二個相關如果這就是爲什麼我沒有把它保存爲else ...值listCount如果小於2應該顯示錯誤消息.....控制甚至不會第一個如果,第二個如果確認框在事件觸發之前到來 –

回答

2

您的C#代碼按順序執行。 ASP.NET服務器正在生成將在用戶的Web瀏覽器中執行的JavaScript和HTML。它將生成全部的輸出並將其發送到客戶端。然後客戶可以用這些數據做任何事情。

所以,如果你的C#代碼生成一些輸出,看起來像這樣:

<html><body><script>alert('hi')</script><b>Hello! 

該文件的全部內容將被髮送到客戶端。客戶端將收到整個文檔,並開始執行它。這不是Pee-Wee的Playhouse-既不是C#,也不是Web瀏覽器會因爲輸出中出現魔術字alert()而停止數據傳輸。

下面是發生了什麼的順序圖。請注意,在客戶端和服務器繼續進行通信的中間沒有任何部分 - HTTP中的,一旦請求結束,就是這樣!您必須提出其他請求(例如,使用AJAX,表單,鏈接等)才能獲得更多數據到服務器。

Sequence diagram of the HTTP lifecycle