Класс 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-событий на сервере