2013-05-09 70 views
1

我得到了下面的Ajax ActionLink的在我的CSHTML頁:如何使用Ajax.ActionLink而不更新URL

@Ajax.ActionLink("Sort By Date", 
       "Specific", 
       "Events", 
       new AjaxOptions { 
        UpdateTargetId="EventListContainer", 
        InsertionMode=InsertionMode.InsertAfter, 
        HttpMethod="GET" 
       }) 

而且我在我的控制器,這兩種方法:

public ActionResult Overview(string user) 
{ 
    // return PartialView here 
} 

public PartialViewResult Specific() 
{ 
    // return PartialView here 
} 

有以下途徑:

routes.MapRoute(
    name: "EventsRoute", 
    url: "Events/{user}", 
    defaults: new { controller = "Events", action = "Overview" } 
); 

現在,我每次調用Ajax方法時,都會調用Overview,而通過Specific而不是具體的方法。我如何確保Specific()被調用,而不更新url?

+0

的問題是,路由模式匹配'{控制器}/{action}' – mattytommo 2013-05-09 14:45:58

回答

1

就像這樣。玩這個命令。

routes.MapRoute(
    name: "EventsSpecificRoute", 
    url: "Events/Specific", 
    defaults: new { controller = "Events", action = "Specific" } 
); 
+0

因此,顯式創建Events/Specific的路由來覆蓋概覽路由?正如我上面的回答。 – 2013-05-09 14:54:17

+0

更好,我爲你解決了:)。該行動是「具體」**而不是「具體」。 – mattytommo 2013-05-09 14:54:48

+0

謝謝。 :)我剛看到錯誤。 – 2013-05-09 14:55:17

0

當您使用定製路由創建一個新的路線

routes.MapRoute(
    name: "EventSpecific", 
    url: "Events/{user}", 
    defaults: new { controller = "Events", action = "Specific" } 
); 

,我建議你RouteLink而非ActionLink

@Ajax.RouteLink("Sort By Date","EventSpecific", new AjaxOptions { 
        UpdateTargetId="EventListContainer", 
        InsertionMode=InsertionMode.InsertAfter, 
        HttpMethod="GET"}, null) 
相關問題