2016-09-05 1 views
0

Я пытаюсь реализовать Ajax.ActionLink POST и при нажатии, он либо идет в ГЭТ контроллер или ничего не делает (когда я включаю jquery.unobrusive-ajax.js)Ajax.ActionLink не POST

Я не получаю сообщений об ошибках браузера F12 Console.

Я пробовал перемещать файл query.unobtrusive-ajax.js без везения.

Web.config имеет:

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

Ajax.ActionLink утверждение:

@Ajax.ActionLink(@item.Title, "GoogleDriveList", "GoogleDrive", 
    new { SelectedFolder = item.DriveId }, new AjaxOptions() { HttpMethod = "POST" }) 

При просмотре источника HTML:

<head> 
    <link href="/Content/bootstrap.css" rel="stylesheet"/> 
    <link href="/Content/bootstrap-datepicker3.css" rel="stylesheet"/> 
    <link href="/Content/site.css" rel="stylesheet"/> 
    <link href="/Content/jquery-ui.css" rel="stylesheet"/> 
    <script src="/Scripts/modernizr-2.6.2.js"></script> 
    <script src="/Scripts/jquery-2.1.4.js"></script> 
    <script src="/Scripts/jquery.validate.js"></script> 
    <script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
    <script src="/Scripts/bootstrap.js"></script> 
    <script src="/Scripts/bootstrap-datepicker.js"></script> 
    <script src="/Scripts/respond.js"></script> 
    <script src="/Scripts/jquery-ui-1.11.4.js"></script> 
    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
</head> 

...navigation code 
... 

<form action="/GoogleDrive/GoogleDriveList" id="myFormID" method="post"> 
    <input name="__RequestVerificationToken" type="hidden" value="xxxxxxxxx" 
/>  

...form stuff... 

<a data-ajax="true" data-ajax-method="POST" 
    href="/GoogleDrive/GoogleDriveList?SelectedFolder=07BPctxxe8t9RcEpqbzYzV2x6NzA">Conf 001</a>  

</form> 

<script> 
... Some java script not related to Ajax.ActionLink 
</script> 

ответ

0

Для любого @Ajax функциональности для работы вы должны добавьте ссылку на библиотеку jquery.unobtrusive.js, но похоже, что у вас есть та т так единственное, что я подозреваю, что может быть проблема у вас есть маршрутизации issue.To подтвердить это подозрение закомментировать каждый метод действий в GoogleDriveController и убедитесь, что у вас есть только это действие:

[HttpPost] 
public ActionResult GoogleDriveList(int SelectedFolder) 
{ 
    return View(); 
} 

Если это работает то вы знаете, что вам нужно исправить маршрутизацию в вашем контроллере.

+0

Я попытался переименовать контроллер [HttpPost] ActionResult в GoogleDriveListPost, чтобы сделать его уникальным, и оператор Ajax.ActionLink не срабатывает при нажатии. Поэтому я прокомментировал , и он снова запускается, но только для HttpGet. Могут ли мои скрипты включать в порядок? – John

+0

Если вы включите сценарий дважды, это не сработает. Поэтому, если вы включите сценарий в представление мастера (макета), убедитесь, что вы не включили его снова на дочернюю страницу, и если вы хотите дать вашему методу уникальное имя вы должны использовать [ActionName («NameOfYourMethod»)] –