Ajax.ActionLink перемещается далеко - PullRequest
2 голосов
/ 02 марта 2012

У меня есть Ajax.ActionLink, который успешно вызывает действие моего контроллера, но вместо обновления цели возвращаемым значением она переходит на новую страницу и показывает возвращаемое значение.

У меня есть ненавязчивый сценарий ajaxна мой взгляд

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>

И эти сценарии находятся на моей странице макета

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

Вот моя ссылка действия:

<span id = "status">Account is Active</span> 
@Ajax.ActionLink("Deactivate", 
                "Deactivate", 
                "Lender", 
                new {id = Model.ID}, 
                new AjaxOptions {
                                HttpMethod = "GET",
                                Confirm = "Confirm Deactivation",
                                UpdateTargetId = "status"
                                })

Мое действие контроллера:

public string Deactivate(int id) {
    var status = "Account is Active";
    ... // call method to deactivate account
    ... // set status = "Account is Inactive"
    return status;
}

Возвращаемое значение установлено правильно.Так почему же страница уходит, а не делает то, что должен делать Ajax, оставайтесь на месте?

Ответы [ 2 ]

4 голосов
/ 02 марта 2012

Вам необходимо включить библиотеку jquery.unobtrusive-ajax.min.js на свою страницу:

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

Обратите внимание, как я включил ее в свой ответ, и это правильный путь.И не , как это:

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>

Никогда не используйте жесткий URL-адрес в приложении ASP.NET MVC.Всегда используйте помощники Url.

Также убедитесь, что в вашем web-файле включен ненавязчивый ajax:

<appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

Убедитесь, что вы удалили абсолютно все следы Microsoft*.js сценариев.Они полностью устарели и не должны использоваться вообще.

0 голосов
/ 02 марта 2012

Включите MicrosoftMvcAjax.js в свой список сценариев.

Что касается слуха, то в этом больше нет необходимости, я не совсем уверен, насколько это верно, я обнаружил, что только при использовании методов расширения AjaxHelper этот файл, кажется, заставляет все работать вне вне коробки.

Я заметил, что в CDN от MS отсутствует файл MicrosoftMvcAjax.js для MVC 4, так что это может быть версия, которая переключена на использование чисто jQuery, но я не могу быть полностью уверен.

...