2012-02-14 5 views
0

jquery ajaxを使用して、asp.netページの国家都道府県ドロップダウンをバインドしています。 ページがサーバーにポストバックされるまで、すべてうまく行きます。国の都道府県および市区町村のためにユーザーが選択した値は、機能を提出することができません。jquery ajaxバインディングasp.netページで利用できない

理由はajaxからバインドされているドロップダウンアイテムはviewstateに書き込まれないため、送信時に値が見つかりません。

回避策は何ですか。

答えて

3

ViewState検証がオンになっているだけでなく、ページのPOST値が使用可能な値のリストにないため、セキュリティ例外が発生します。

Webフォームエンジンは、検証を要求するときに非常に困惑します。 ページ 2)1)無効イベントの検証は、ブラウザが提出した値がリストに載っていないよう(コンボのSelectedItemに依存している)のではなく下からそれを読んでいない:

通常のソリューションでありレベルthis.Request.Form["dropdownID"]

+0

正確には、私はeventPageValidationを無効にする必要があります。 –

0

Easy solution hiddenボックスは、選択した値を保存します。ページポストバックの場合、非表示のボックスの値が空でない場合は、サーバー側の処理のために非表示のボックスから読み取った値を使用します。 "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するイベントリスナーを追加することですビューステートの検証を無効にしたい。

関連する問題