asp.net mvc路由中的两个参数

时间:2010-04-22 18:43:11

标签: asp.net-mvc parameters routes

这是我之前在此论坛上提出的问题的修改。

我的控制器操作:

public ActionResult SearchResults(string searchTerm, int page)...

我的观点:

<%= Html.PageLinks((int)ViewData["CurrentPage"], (int)ViewData["TotalPages"], i => Url.Action("SearchResults", new { page = i }))%>...

路线条目:

routes.MapRoute(
            null,
            "SearchResults",
            new { controller = "Search", action = "SearchResults", page = 1 } // Defaults
        );

        routes.MapRoute(
          "Search",
          "SearchResults/Page{page}",
          new { controller = "Search", action = "SearchResults" },
          new { page = @"\d+" }
        );

我的目标是为搜索结果提供分页链接。问题是当我点击分页链接中的任何页面时,它会给我一个空的serach术语的搜索结果。 除了页码参数之外,我如何传递搜索项参数,这是一个字符串? 我应该在路由中添加什么?

2 个答案:

答案 0 :(得分:0)

我认为如果您在路线值字典中添加未在路线中定义的其他内容,则会将它们添加为获取参数。

所以,如果你做了类似的事情:

Url.Action("SearchResults", new { page = i, searchterm = "YourSearchTerm" })

它应该吐出像SearchResults/Page2?searchterm=yousearchterm

这样的路线

HTHS,
查尔斯

答案 1 :(得分:0)

您是否在Html.PageLinks助手中尝试过这个?

Url.Action("SearchResults", new { searchTerm = "your query", page = i })

注意参数的顺序。