我使用jquery ajax綁定了asp.net頁面上的國家/地區城市下拉菜單。 一切都很順利,直到頁面回發到服務器。用戶爲國家和城市選擇的值無法用於提交功能。jquery ajax綁定無法在asp.net頁面上獲得
這樣做的原因似乎是從ajax綁定的下拉項不會寫入視圖狀態,因此在提交時未找到任何值。
什麼是解決方法。
我使用jquery ajax綁定了asp.net頁面上的國家/地區城市下拉菜單。 一切都很順利,直到頁面回發到服務器。用戶爲國家和城市選擇的值無法用於提交功能。jquery ajax綁定無法在asp.net頁面上獲得
這樣做的原因似乎是從ajax綁定的下拉項不會寫入視圖狀態,因此在提交時未找到任何值。
什麼是解決方法。
不僅如此,在打開ViewState驗證的情況下,您還應該得到一個安全異常 - 因爲頁面POST的值不在可用值列表中。
Web Forms引擎在請求驗證時是一種偏執狂。
通常的解決辦法是: 1)頁 2)禁用事件驗證不依賴於組合的SelectedItem
(如瀏覽器提交的值不就行了),而是從一個較低的閱讀水平this.Request.Form["dropdownID"]
。
簡易解決方案隱藏框保存選定的值。如果頁面回發,如果隱藏框值不爲空,則使用從隱藏框中讀取的值進行服務器端處理。 「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,那麼當服務器端點擊事件發生時,從隱藏字段使用的值,就個人而言,我不不想關閉視圖狀態驗證。
確切的說,我必須關閉eventPageValidation。 – 2012-02-14 19:44:24