MVC3 - Ajax actionlink - OnBegin, onComplete - PullRequest
6 голосов
/ 21 сентября 2011

Использование MVC3, C # и Razor View Engine: у меня есть форма с ссылкой Ajax Action.В опциях я пытаюсь указать вызовы функций OnBegin и OnComplete javascript.В этом вопросе я вынул основные функции и просто добавил оповещения, чтобы я мог убедиться, что функции были нажаты.Что я действительно хочу сделать с этими функциями, так это использовать $ .blockUI во время вызова ajax.

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

@Ajax.ActionLink("my test link", "myAction", new { Controller = "myController" }, new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })

<script type="text/javascript">
    function ajaxStart() {
        alert("start");
    }

    function ajaxStop() {
        alert("stop");
    }

</script>

По какой-то причине две функции никогда не вызываются, как указано.Я пробовал это с круглыми скобками и без, например:

@Ajax.ActionLink("my test link", "myAction", new { Controller = "myController" }, new AjaxOptions { OnBegin = "ajaxStart()", OnComplete = "ajaxStop()" })

Ни одна из них не работает.

Есть идеи?

Спасибо, Тони

Ответы [ 2 ]

13 голосов
/ 21 сентября 2011

Убедитесь, что вы включили следующий скрипт на свою страницу:

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

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

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

В ASP.NETНенавязчивый JavaScript MVC 3 используется с jQuery, поэтому, если вы не включите правильные сценарии, атрибуты HTML5 data- *, которые отправляются помощниками html, не интерпретируются, и запрос AJAX не отправляется.

3 голосов
/ 21 сентября 2011

Вы можете попытаться поместить блок <script> перед вызовом метода Ajax.ActionLink. Используйте этот синтаксис для ссылки ajax:

@Ajax.ActionLink("my test link", "myAction", "myController", new AjaxOptions { OnBegin = "ajaxStart", OnComplete = "ajaxStop" })

и не забудьте поставить импорт jquery.unobtrusive-ajax.min.js на ваш взгляд или в _Layout.cshtml

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...