2016-07-04 83 views
1

我有一個我正在處理的網站,用戶可以在其中添加或刪除電車網絡的已預訂流量。我用刪除按鈕來到這裏。通過JQuery執行mvc-5操作中的刪除操作

<input type="button" value="Delete" class="deleteTraffic btn btn-link NoBorder NoBackGround" data-id="@traffic.Id" /> 
jQuery(document).ready(function() { 
    jQuery('.deleteTraffic').click(function() { 
     var id = $(this).data('id'); 
     var url = '@Url.Action("DeleteTraffic", "TrafficDate", new { trafficId=id })'; 
     url = url.replace("id", id); 
     $.post(url, function (data) { 
      if (data) { 
       $('#pnlEditTraffics').hide().fadeIn('fast'); 
      } else { 
       alert("Error."); 
      } 
     }); 
    }); 
}); 
public ActionResult DeleteTraffic(int id) 
{ 
    return Json(TrafficData.DeleteTraffic(id)); 
} 

按鈕正常工作和參數來通過罰款,但從來沒有達到在控制器的動作。控制器被命名爲TrafficDateController

+1

'@ Url.Action( 「DeleteTraffic」, 「TrafficDate」,新{ID = ID})'操作名稱是第一位的,而參數名稱是'id',不'trafficId ' – haim770

+0

謝謝,但沒有改變。我不認爲它正確地轉換url字符串。在調試和觀看url之後,在該行執行後,url仍然是'@ Url.Action(「DeleteTraffic」,「TrafficDate」,new {trafficId = id})''。它應該是這樣嗎? id在此時被一個數字所取代。 – inifus

+0

腳本中'url'的實際值是多少?此外,請顯示您的路由表 – haim770

回答

1

第一個問題是在你傳遞參數給Url.Action()的順序,動作名是第一個參數,而第二個是控制器的名稱:

@Url.Action("DeleteTraffic", "TrafficDate") 

而且,因爲DeleteTraffic動作是用動詞POST調用的,所以最好將id作爲請求主體的一部分,從而避免需要使用url.replace('id', id)手動構建最終路徑:

var url = '@Url.Action("DeleteTraffic", "TrafficDate")', 
    data = { id: id }; 

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

MSDN

+0

我把它命名爲參數,因爲我已經在那裏使用數據,不知道是否重要。但仍然,當我按下按鈕時,不會調用控制器操作,它會完全跳過帖子 – inifus

+0

@inifus,檢查控制檯是否有錯誤(404?500?) – haim770

+0

確實我沒有找到404 – inifus