2016-05-06 45 views
2

你好,如果這已被覆蓋之前,我很抱歉。爲什麼dropdownlist在重新加載時再次添加項目?(asp.net c#)

現在有一個令我煩惱的錯誤是2天。

我有一個頁面,當用戶點擊一個「寶馬」徽標 當頁面加載下拉列表(稱爲「模型」)將從某個列表中獲取值時將加載。

這裏的問題是,無論何時刷新頁面(F5),即使添加了「model.item.clear()」,它也會多次添加項目。方法。

所以底線是,我想只添加一次項目,即使我重新加載頁面(F5)

的NewTransaction.aspx是有下拉列表(「模型」)的頁面, 這是從具有「寶馬標誌」

<a href="NewTransaction.aspx?type=Car&company=BMW"><img class="logo" style="width:200px" src="images/BMW.png" /></a> 

此另一個頁面的代碼在下拉列表的代碼NewTransaction.aspx

<asp:DropDownList ID="model" runat="server" CssClass="inputs" OnSelectedIndexChanged="model_SelectedIndexChanged"></asp:DropDownList> 

這裏是我從列表中輸入具有「Car」對象的數據的部分。 注意,該代碼是在「的Page_Load」 方法

switch (Server.UrlDecode(Request["company"]).ToString()) 
     { 

      case "BMW": 
       model.Items.Clear(); 
        foreach (Car n in OverLand.car) 
        { 
         if (n.made == "BMW") 
         { 
          model.Items.Add(n.model); 
         } 
        } 


       break; 

picture of the output

請注意,它有許多其他公司的「案件」。

謝謝。

編輯:我嘗試了以下

switch (Server.UrlDecode(Request["company"]).ToString()) 
     { 
      case "BMW": 

       if (!IsPostBack) 
       { 
        foreach (Car n in OverLand.car) 
        { 
         if (n.made == "BMW") 
         { 
          model.Items.Add(n.model); 
         } 
        } 
       }   

       break; 

,然後我跑的網站在谷歌Chrome和它的工作但後來我停止了它並重新運行它,並在下拉列表添加的物品,如5倍。 我不知道這裏發生了什麼.-。

編輯2:所以我注意到,有史以來第一次一切正常,當我嘗試重新加載頁面谷歌Chrome把這條消息給我:i.imgur.com/EVjLxGD.png。

但是,如果我關閉了項目並重新打開它,它會多次添加數據(我認爲這相當於頁面刷新次數+從模型列表中選擇模型的次數)和阻止我必須停止從IIS的網站,但當然這只是一種方法來看看其他一切工作是否正常,我想不出一個想法停止它,除了做一個方法,將檢查多少模型我在我的寶馬數據庫中,並將該計數器放入一個變量,並在我已用於添加模型到列表中的「if」條件中添加另一個條件,以便在dropdownlist.Items.Count> Counter之後停止添加。我仍在尋找更好的解決方案。

+0

它是一個錯字或你必須使用'model.Items.Clear();'? – nelek

+1

將下拉列表的內容放在裏面:if(!IsPostBack){} – Zaki

+0

這只是一個錯誤,現在我編輯它。 –

回答

0

按F5或刷新瀏覽器會導致它重複最後一次請求。因此,如果您第一次訪問某個頁面(而不是回發),然後按F5 - F5生成的請求也不會成爲回發。但是,如果您訪問一個頁面(而不是回發),然後單擊一個按鈕(導致回發並引發單擊事件),則按F5也將成爲回發,並且還會引發相同的單擊事件。

你不能改變的IsPostBack是否是真還是假。你將不得不設計一些其他方式來知道列表是否需要重新加載 - 或者簡單地清除()它並重新加載它。

+0

感謝您解釋「回發」是如何工作的,所以我注意到有史以來第一次一切正常,當我嘗試重新加載頁面時,Chrome瀏覽器會將此消息傳遞給我:http://i.imgur.com/ EVjLxGD.png。 –

+0

但是如果我關閉該項目並重新打開它再次,它增加了數據的多個時間(我認爲這是等於多少次的頁面刷新+多少次,我選擇從型號列表中選擇模型) –

+0

和防止我不得不停止從IIS的網站,但當然這只是一種方式來看看其他一切工作是否正常,我想不出一個想法來阻止它,除了做一個方法,將檢查多少模型我在我的寶馬數據庫中,並將該計數器放入一個變量中,並在我已用於將模型添加到列表中的「if」條件中添加另一個條件,以便在dropdownlist.Items.Count> Counter之後停止添加。仍在尋找更好的解決方案 –

0

以及我不能相信我花了3天嘗試弄明白,問題實際上是從「IIS快車」(本地主機啄與視覺工作室)。 正如我在第二次編輯中提到的,第一次運行網站時一切正常。

但是,如果你停止調試並重新運行它,它會添加項目多次。

我想在我的朋友的筆記本電腦之一相同的代碼和它的工作完美! 。

我注意到當他停止調試時,他的「IIS」會自動關閉(它的圖標在任務欄中消失),但對於我來說,我必須手動從「IIS」圖標任務欄。

我仍然需要進行重複數據的解釋(請注意,IIS不會停止託管當這種情況發生的部位),我需要一種方法,當我停止調試(請注意,我使用Visual停止IIS Studio 2015社區版)。

謝謝。

相關問題