2012-02-14 26 views
0

我使用jquery ajax綁定了asp.net頁面上的國家/地區城市下拉菜單。 一切都很順利,直到頁面回發到服務器。用戶爲國家和城市選擇的值無法用於提交功能。jquery ajax綁定無法在asp.net頁面上獲得

這樣做的原因似乎是從ajax綁定的下拉項不會寫入視圖狀態,因此在提交時未找到任何值。

什麼是解決方法。

回答

3

不僅如此,在打開ViewState驗證的情況下,您還應該得到一個安全異常 - 因爲頁面POST的值不在可用值列表中。

Web Forms引擎在請求驗證時是一種偏執狂。

通常的解決辦法是: 1)頁 2)禁用事件驗證不依賴於組合的SelectedItem(如瀏覽器提交的值不就行了),而是從一個較低的閱讀水平this.Request.Form["dropdownID"]

+0

確切的說,我必須關閉eventPageValidation。 – 2012-02-14 19:44:24

0

簡易解決方案隱藏框保存選定的值。如果頁面回發,如果隱藏框值不爲空,則使用從隱藏框中讀取的值進行服務器端處理。 「ViewState不負責表單字段值,所以使用隱藏字段來保存值。」

自己檢查一下。

C# 
    public partial class _Default : System.Web.UI.Page 
    { 
     public string id = ""; 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      id = this.Label1.ClientID; 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      string testvalue = this.Label1.Value; 
     } 
    } 
//break down at button1_click 


<asp:HiddenField ID="Label1" runat="server" Value="" /> 


javascript 



    $(document).ready(function() { 


       $("#"+'<%=id%>').val("test"); 

      }); 

因此,所有你需要做的就是添加一個事件監聽器,當項目被選中更新的隱藏字段的值,以dropdownbox,那麼當服務器端點擊事件發生時,從隱藏字段使用的值,就個人而言,我不不想關閉視圖狀態驗證。