Подтвердить что ты не робот

Контроллер вызова Ajax.ActionLink дважды

Когда я нажимаю Ajax.ActionLink, он дважды вызывает мой контроллер.

<td id = @tdTag>
   @Ajax.ActionLink("LL-" + item.getProjectAbbreviation(item.projectID.Value) + "-" + item.prjLessonID, "Details",
                    new { id = item.lessonID },
                    new AjaxOptions
                        {
                          HttpMethod = "POST",
                          UpdateTargetId = "details",
                          InsertionMode = InsertionMode.InsertAfter ,
                          OnSuccess = "showDetails()"

                         }) 

Мой контроллер выглядит следующим образом:

   public ActionResult Details(int id)
    {
        using (LLDataContext storeDB = new LLDataContext())
        {
            var lesson = (from l in storeDB.lessons
                          where l.lessonID == id
                          select l).SingleOrDefault();

            return PartialView(lesson);

        }
    }
4b9b3361

Ответ 1

Я только что столкнулся с этой проблемой, и обнаружил, что дважды загрузил "jquery.unobtrusive-ajax.js". Я удалил второй экземпляр, и все работает хорошо. Чтобы увидеть это в действии, просто добавьте его три раза и создайте @Ajax.ActionLink(...) с помощью подтверждения AjaxOption. Вы получите подтверждение несколько раз.

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

Ответ 2

используйте только один js не один

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>

или

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>

Это решит ваши проблемы.

Ответ 3

anAgent ответ помог мне исправить эту проблему, но в качестве дополнения я упомянул, что в моем случае множественные ссылки на "jquery.unobtrusive-ajax.js" были в разных файлах; один из них был в myView.cshtml, а другой - в _Layout.cshtml.

Ответ 4

Убедитесь, что вы включили jquery unobtrusive script на свою страницу (в дополнение к jquery):

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

и что вы включили ненавязчивый javascript в свой web.config

<add key="UnobtrusiveJavaScriptEnabled" value="true" />

Кроме того, чтобы дополнительно диагностировать такие проблемы, я бы рекомендовал вам использовать какой-либо инструмент, который позволит вам точно видеть, что происходит на уровне HTTP. FireBug более чем отлично подходит для такого рода анализа. Он также покажет любые возможные ошибки javascript, которые могут возникнуть у вас, он покажет или не будет запросы AJAX, которые предоставят вам дополнительную информацию о том, выполняется ли запрос AJAX или обычный запрос,... полезные материалы.