2011-12-27 8 views
1

Ajax jQueryを使用して次のシナリオを呼び出す方法は? jQueryを使用してページのPostBack中にDropDownListを1回だけバインドする方法はありますか?Ajax JQuery Callを使用してPage.IsPostBackオプションを使用するにはどうすればよいですか?

<asp:DropDownList ID="ddlState" runat="server" DataSourceID="StateDataSource" DataTextField="State1" 
    Width="155px" DataValueField="State1" TabIndex="10"> 
</asp:DropDownList> 
<asp:ObjectDataSource ID="StateDataSource" runat="server" SelectMethod="State_SelectALL" 
    TypeName="PL.BLL.StateController" EnableCaching="true"> 
</asp:ObjectDataSource> 

答えて

1

のScriptManagerクラスは3.5以降プロパティIsInAsyncPostbackを提供していますが、あなたはjqueryのAJAXを通じて要求を行っているとして、私はあなたがのScriptManagerを使用していないと仮定します。

jQueryのは、実際にあなたが要求がajaxedされたかどうか確認するために、サーバー側を使用することができ、要求にHTTPヘッダを追加します:あなたのコードビハインドで"X-Requested-With" = "XMLHttpRequest"

// X-Requested-With header 
// For cross-domain requests, seeing as conditions for a preflight are 
// akin to a jigsaw puzzle, we simply never set it to be sure. 
// (it can always be set on a per-request basis or even using ajaxSetup) 
// For same-domain requests, won't change header if already provided. 
if (!s.crossDomain && !headers["X-Requested-With"]) { 
    headers[ "X-Requested-With" ] = "XMLHttpRequest"; 
} 

を、あなたは、プロパティを追加することができますあなたのページへの(またはあなたのベースページ - または拡張メソッドを作る)の値を確認する:件名に

public bool IsAjaxPostback 
{ 
    get 
    { 
     return HttpContext.Current.Request.Headers["X-Requested-With"] == "XMLHttpRequest"; 
    } 
} 

良い記事:Detecting Ajax Events on the Server

1
public void Page_Load(Object sender, EventArgs e) 
{ 
    if(IsPostBack) 
    { 
    //do stuff on .net postback 
    } 

    var scriptManager = ScriptManager.GetCurrent(Page); 

    if(scriptManager.IsInAsyncPostBack) 
    { 
    //do stuff on .net ajax postbacks 
    } 
} 
関連する問題