Ajax.ActionLink дважды вызывает контроллер - PullRequest
12 голосов
/ 05 июня 2011

Когда я нажимаю на 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);

        }
    }

Ответы [ 5 ]

31 голосов
/ 11 февраля 2012

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

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
3 голосов
/ 08 октября 2013

используйте только один JS, а не один

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

или

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

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

1 голос
/ 25 апреля 2012

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

0 голосов
/ 23 мая 2018

просто проверьте эту ссылку jquery

src="~/Scripts/jquery.unobtrusive-ajax.min.js"

может быть, вы добавите в поле зрения дважды или

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
    "~/Scripts/jquery.unobtrusive*",
0 голосов
/ 05 июня 2011

Убедитесь, что вы включили ненавязчивый скрипт jquery на свою страницу (в дополнение к 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 или обычный запрос, ... полезные сведения.

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