asp.net mvc: как обнаружить, когда страницу называют, используя ajax

как обнаружить, когда страницу называют, используя ajax в asp.net mvc?

17
задан Jason Berkan 18 January 2010 в 16:54
поделиться

6 ответов

Вот отличное чтение по вашим вопросам от Джоэла Спольски.

-121--3367033-

Для табличных представлений можно использовать селекторы и какой-либо идентификатор (например, UIView тэгов). Что-то вроде этого:

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
  return [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"tableView%d:titleForHeaderInSection:", tableView.tag])];
}

Конечно, вам нужно будет иметь один метод для каждого из ваших табличных представлений. Предположим, что у ваших двух таблиц есть теги 100 и 101, тогда у вас будет taureView100: «» ForHeaseInSection «» и taureView101: «» ForHeaseInSection «».

-121--3643205-

Согласно книге Professional ASP.NET MVC 1.0 библиотека MVC AJAX вставит поле формы «X-Requested-With» со значением «XMLHtterRequest».

Затем можно использовать метод расширения в System.Web.Mvc, который означает, что можно просто вызвать Request.IsAjaxRequest () и получить простое сообщение true или false, если это запрос AJAX.

35
ответ дан 30 November 2019 в 11:08
поделиться

Вам нужно будет пройти какой-то параметр с вашим вызовом Ajax - AJAX - это просто запрос на получение, ничем не отличается, затем введя URL в адресной строке и нажатием Enter (именно поэтому ajax должен быть охранен Против кросс-сайтов сценариев атаки, в противном случае злоумышленник может заставить людей выполнить команды AJAX на ваш сайт, просто включая URL на изображении)

0
ответ дан 30 November 2019 в 11:08
поделиться

Нет определения определения того, что вызов был сделан JavaScript или непосредственно в браузере, так как это обычный HTTP Call.

Вы можете добавить заголовок к вашему вызову AJAX, чтобы отличить его от других вызовов, или, возможно, добавить параметр в строку запроса, которая используется только на вызовах AJAX.

ASP.NET MVC Ajax добавляет такой заголовок - X-запрошенный - с: XMLHTTPREQUEST , который вы можете использовать для нюхает, что это Ajax Call Call с библиотекой MVC AJAX. Однако, если вы используете jQuery или ваши собственные звонки Ajax, это не будет установлено. Кроме того, другие клиенты могут подняться на этот заголовок (например, WebClient, например,), чтобы найти не гарантию, что вызов AJAX был сделан.

5
ответ дан 30 November 2019 в 11:08
поделиться

Лучший способ проверить, является ли запрос на запрос AJAX, должен быть проверить request.isajaxrequest () . Приятно знать, что под капотом MVC Framework проверяет запросы AJAX в параметрах запроса или заголовок запроса. Код в исходном коде в ASP.NET MVC:

    public static bool IsAjaxRequest(this HttpRequestBase request) {
        if (request == null) {
            throw new ArgumentNullException("request");
        }

        return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"));
    }

, поэтому, если вы хотите проверить его в манере (не рекомендуется), вы должны проверить оба.

4
ответ дан 30 November 2019 в 11:08
поделиться

Почему это имеет значение? Это не должно. Вы действительно пытаетесь сделать переговоры о контенте?

-7
ответ дан 30 November 2019 в 11:08
поделиться

Вы можете проверить его вручную так:

bool isAjaxRequest = request.Headers["X-Requested-With"] == "XMLHttpRequest";

Или когда вы находитесь в контроллере в ASP. NET MVC, на который ссылается System.Web.Mvc, Вы получите extension-method на объекте HttpRequestBase, к которому можно получить доступ в ActionMethodе, как это:

bool isAjaxRequest = Request.IsAjaxRequest();
7
ответ дан 30 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: