@Ajax.ActionLink не заменяет частичный вид

Я хочу заменить div на вид, используя @Ajax.actionLink, когда я нажимаю на эту ссылку. Но он не работает.

вот моя ссылка

<div>
 <li>   @Ajax.ActionLink("settings","Create","Test",


new AjaxOptions { UpdateTargetId = "components" , InsertionMode = InsertionMode.Replace}
)  </li>
</div>

и мой целевой div

<div id="components">
</div>

Я также включил js файл в макет, подобный этому

    <script src="~/Scripts/Controls/jquery-2.0.3.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script src="~/Scripts/modernizr-2.5.3.js"></script> 

и мой результат действия

    public PartialViewResult Create()
    {

        return PartialView("Create");
    }

Ответ 1

Проблема была в моих скриптах. Хотя я добавил ненавязчивый-ajax.min.js, но он был поврежден. Затем я переустановил его из пакета nuget.

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 

Ответ 2

Для тех, кто установил Microsoft.jQuery.Unobtrusive.Ajax(пронумеровать nu-get или нет) и хотите использовать его через комплект, не забывайте:

  • Чтобы добавить библиотеку в свой пакет bundleconfig. Например:

            bundles.Add(new ScriptBundle("~/bundles/unobtrusive").Include(
                     "~/Scripts/jquery.unobtrusive*"));
    
  • Чтобы отобразить его (моя отображается в _Layout.cshtml):

    @Scripts.Render( "~/связки/ненавязчивые" )

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

Ответ 3

Верьте или нет, я правильно настроил все, кроме одного:

Чтобы установить Microsoft jQuery Unobtrusive Ajax, запустите следующие команды в консоли диспетчера пакетов:

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 

Инструкции здесь: https://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/

Ответ 4

может быть он для пакета nuget. Установите его на

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax -Version 3.2.2 

Ответ 5

Когда вы пишете new AjaxOptions{ --- }, вместо этого напишите его как:

new AjaxOptions() { .... } and write HttpMethod also in ajaxoptions. 

Правильное использование ajax.actionlink:

@Ajax.ActionLink("Text", // <-- Text to display
                "Action method", // <-- Action Method Name
                "Controller Name" //  <--Controller Name
                new AjaxOptions()
                {
                 UpdateTargetId="CustomerList", // <-- DOM element ID to update
                 InsertionMode = InsertionMode.Replace, // <-- Replace the content of DOM element
                 HttpMethod = "GET" // <-- HTTP method(Post/Get)
                })

Ответ 6

Если это MVC5? Убедитесь, что вы включили правильный ненавязчивый пакет ajax т.е. вы можете установить консоль менеджера пакетов NuGet с последним пакетом

Установочный пакет Microsoft.jQuery.Unobtrusive.Ajax

После установки последнего он начал работать для меня.