Как использовать параметр Page.IsPostBack с помощью Ajax JQuery Call? - PullRequest
1 голос
/ 27 декабря 2011

Как использовать следующий сценарий с использованием вызова Ajax jQuery?Можно ли в любом случае связать DropDownList только один раз за PostBack страницы, используя jQuery?

<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>

Ответы [ 2 ]

1 голос
/ 28 декабря 2011
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
   }
}
1 голос
/ 28 декабря 2011

Класс ScriptManager предоставляет свойство IsInAsyncPostback начиная с 3.5, но поскольку вы выполняете ajax-запросы через jquery, я полагаю, что вы не используете ScriptManager.

jQuery фактически добавляет http-заголовок к запросу, который вы можете использовать на стороне сервера, чтобы проверить, был ли запрос Ajaxed или нет: "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";
    }
}

Хорошая статья на эту тему: Обнаружение Ajax-событий на сервере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...