AJAX调用没有达到要求的MVC路由

时间:2016-09-28 00:34:18

标签: jquery ajax asp.net-mvc

我今天有一份报告称分页不再适用于我的应用程序。由于这是最近的更新,有些事情发生了变化,但我不知道如何解决它。

最终归结为我的控制器中的错误操作被调用。我有两个动作如下:

1。非AJAX

[HttpGet]
public virtual ActionResult ByRegion(string aRegionNameOne, string aRegionNameTwo = "", string aRegionNameThree = "", string aRegionNameFour = "")

2。通过MVC寻呼机进行AJAX寻呼

public virtual ActionResult ByRegionForPage(string aRegionNameOne, string aRegionNameTwo = "", string aRegionNameThree = "", string aRegionNameFour = "", int p = 1)

当在MVC寻呼机中点击分页链接时,我通过FireBug获得了这样的链接:

  

https://localhost/region/australia/cruises/%232?X-Requested-With=XMLHttpRequest

而不是我在地址栏中看到的是:

  

https://localhost/region/australia/cruises#p=2

我的路线是:

:一种。非寻呼路线(非AJAX)

aRoutes.MapRoute(RouteNames.SIDE_BAR_MENU_SEARCH_BY_REGION_1_LEVELS, "region/{aRegionNameOne}/cruises/{aPageNumber}", new
                                                                                                                                  {
                                                                                                                                      controller = MVC.Cruises.Name,
                                                                                                                                      action = MVC.Cruises.ActionNames.ByRegion,
                                                                                                                                      area = "",
                                                                                                                                      //Work around bug in T4MVC https://github.com/T4MVC/T4MVC/issues/28
                                                                                                                                      aPageNumber = UrlParameter.Optional
                                                                                                                                  }
                );

B中。寻呼路线(AJAX)

aRoutes.MapRoute(RouteNames.SIDE_BAR_MENU_SEARCH_BY_REGION_1_LEVELS_FOR_PAGE, "region/{aRegionNameOne}/cruises/#{p}", new
                                                                                                                                 {
                                                                                                                                  controller = MVC.Cruises.Name,
                                                                                                                                  action = MVC.Cruises.ActionNames.ByRegionForPage,
                                                                                                                                  area = "",
                                                                                                                                  //Work around bug in T4MVC https://github.com/T4MVC/T4MVC/issues/28
                                                                                                                                  p = UrlParameter.Optional
                                                                                                                              }

很明显%232?X-Requested-With = XMLHttpRequest 导致我命中路线A,因此操作1而不是预期的路线B.

从事物的外观来看,MVCPager正在破坏URL,因为HTML是:

<a data-pageindex="2" href="/region/australia/cruises/%232">2</a>

有没有人对修复有任何想法或看到过这种行为?

0 个答案:

没有答案
相关问题