Не работает ли Request.IsAjaxRequest () в обновлении MVC RC1? - PullRequest
1 голос
/ 01 февраля 2009

Этот материал MVC забавен, но каждый шаг по пути - еще одно маленькое препятствие.

Я просто использую Request.IsAjaxRequest впервые сегодня вместе с библиотекой Microsoft AJAX. Я еще не использую jQuery (я должен был упомянуть об этом, поскольку я только что дал ссылку на вопрос о jQuery!).

К сожалению, я установил RC1 обновление ДО того, как я проверил этот код.

Я использую Ajax.BeginForm.

<% using (Ajax.BeginForm("Contact", "AboutUs", new AjaxOptions()
      {
          OnBegin = "submitComments_begin",
          OnSuccess = "submitComments_success",
          OnFailure = "submitComments_failure",
          OnComplete = "submitComments_complete",
          LoadingElementId = "submitting"

      }, new { id="fooForm" })) 

Когда выполняется действие моего контроллера, это мои заголовки:

Connection Pragma, Content-Length, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Пользователь-агент, UA-CPU

Кроме того, ФОРМА содержит этот параметр

Request["__MVCASYNCPOST"] = "true"  

И конечный эффект в том, что это возвращает false!

Request.IsAjaxRequest()    

У меня проблема с Chrome и Internet Explorer.

Пожалуйста, скажите мне, если я делаю что-то глупое или что-то просто сломалось.

Заключительная мысль: Хм - возможно, мне нужна новая DLL-библиотека по фьючерсам. Я обновлю, если это окажется проблемой

Ответы [ 3 ]

1 голос
/ 02 февраля 2009

Спасибо Филу за , который сказал мне, что мне пришлось обновить файл .js MicrosoftMvcAjax.js. Несмотря на то, что в заметках о выпуске мне не было сказано, что мне нужно их обновлять.

Фил: Если вы хотите получить очки за правильный ответ, у вас есть 2 дня, пока я не смогу принять свой собственный ответ. Спасибо!

0 голосов
/ 30 декабря 2009

Не отображается в опубликованном вами фрагменте, но, скорее всего, у вас есть теги формы / формы. Они мешают Ajax.BeginForm, который также генерирует теги формы. После удаления тегов внешней формы Request.IsAjaxRequest вернет true.

0 голосов
/ 01 февраля 2009

Я все еще не уверен, если это ошибка или нет - кто-нибудь может подтвердить ?? Помните, я говорю о новом обновлении RC1, а не об оригинальном RC1.

В случае, если это ошибка (и я надеюсь, что я просто делаю что-то небрежное), тогда это мое временное решение на данный момент:

Метод расширения в HttpRequestBase:

public static bool IsAjaxRequest2(this HttpRequestBase request)
        {
            return !string.IsNullOrEmpty(
                   request.Params["__MVCASYNCPOST"] as string);
        }

Тогда я просто использую Request.IsAjaxRequest2(), и я буду искать и заменять позже, когда он будет исправлен.

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