2016-09-05 28 views
0

我想實現一個Ajax.ActionLink POST和點擊時,它要麼轉到控制器GET或不執行任何操作(當我包括jquery.unobrusive-ajax.js)Ajax.ActionLink將不會發布

我沒有瀏覽器F12控制檯錯誤消息。

我試着移動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庫的引用,但似乎你有tha牛逼所以我懷疑可能是問題的唯一的另一件事是,你有一個路由issue.To證實這種懷疑註釋掉的每一個動作方法的GoogleDriveController,並確保你只有這個動作:

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

如果這樣的作品那麼你知道你需要修復你的控制器中的路由

+0

我試着將[HttpPost]控制器ActionResult重命名爲GoogleDriveListPost,以使其唯一,Ajax.ActionLink語句在點擊時不會觸發。所以我註釋掉了,並且它會再次觸發,但僅限於HttpGet。我的包含腳本可能無法正常工作嗎? – John

+0

如果包含腳本兩次,它將無法正常工作。因此,如果將腳本包含在主(佈局)視圖中,請確保不要再將其包含在子頁面上,並且如果要爲方法指定唯一的名稱你應該使用[ActionName(「NameOfYourMethod」)] –