2013-05-06 23 views
0

如何使用jQuery使用Razor語法發佈到不同的控制器?以下是我正在嘗試使用的代碼。除了包含@Url.Action的信息外,每個警報都會彈出我期望的確切信息。這給了我一個只包含控制器和方法的URL(即/Agent/Details)。 sNumber完全缺失。使用jQuery將.post()轉換爲帶有Razor的ASP MVC控制器方法

奇怪的是,這段代碼仍然正確地張貼到控制器,正確的sNumber參數。但是,一旦控制器完成從數據庫中獲取代理並嘗試渲染視圖的過程,則什麼都不會發生。用戶停留在同一頁面上。

這裏是jQuery的

   alert("input: " + item + ", map: " + map[item].sNumber); 
       var sNumber = map[item].sNumber; 
       alert("variable: " + sNumber); 

       alert('@Url.Action("Details","Agent")', { id: sNumber }); 
       $.post('@Url.Action("Details","Agent")', { id: sNumber }); 

有一噸的控制器代碼,所以我將不會發布它饒你。然而,這是最後一行

return View(bigAgent); 

控制器使用sNumber輸入參數抓住從我們的數據庫中的記錄和傳遞給Details認爲,代理商的信息。我使用jQuery搜索和我們的常規搜索(正確重定向)檢查了bigAgent對象的內容,它們是一樣的。無論出於何種原因,在使用jQuery搜索時,您只是沒有被引導至Details頁面。

回答

4

發佈正確並不奇怪。您正在使用POST請求,因此參數sNumber不屬於該URL,因爲它將與GET請求(例如/Agent/Details/3)一樣。

你沒有被重定向,因爲當你使用jQuery AJAX方法時,它們是異步發生的。您需要在$.post()函數的成功回調中自己處理重定向。

$.post('url', { data }, function(data) { 
    // callback 
}); 

它有點好像你不應該在所有使用AJAX,應執行一般的表單提交,所以你可以處理你的控制器中的重定向。

相關問題