使用@ Html.PagedListPager时,Url附加第二个查询字符串

时间:2013-02-27 09:30:16

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

有没有人知道如何解决这个问题,我有一个搜索框,当我输入一个搜索短语并提交表格时,网址是:

http://localhost:50435/Search-Results-For?q=hotels&Option=Web&Page=1

返回结果后,我可以翻页,网址为:

http://localhost:50435/Search-Results-For/hotels/web/2

但是,如果我尝试进行另一次搜索,则该搜索将附加到上面的网址:

http://localhost:50435/Search-Results-For/hotels/web/2?q=poole&Option=web&Page=2

我不知道如何解决这个问题,我尝试将寻呼机置于部分视图中,更改参数但似乎没有任何效果。

之前是否有人遇到此问题或知道如何解决此问题。

传呼机:

<div id="dvPagePager">@Html.PagedListPager((IPagedList)ViewBag.SearchResults, page => Url.Action("Results", new { Page = page, q = @ViewBag.q, Option = @ViewBag.b}), PagedListRenderOptions.OnlyShowFivePagesAtATime)</div>

形式:

@using (Html.BeginRouteForm("SearchEngine", FormMethod.Get, new { @id = "frmSearchEngine" }))
                                    {
                                   { Html.RenderAction("pvSearchForm", "Home"); }
                                   //Html.RenderPartial("~/Views/Shared/pvSearchForm.cshtml");
                                    }

路线:

routes.MapRoute(
                name: "SearchEngine",
                url: "Search-Results-For/{q}/{Option}/{Page}",
                defaults: new { controller = "Search", action = "Results", q = UrlParameter.Optional, Option = UrlParameter.Optional, Page = UrlParameter.Optional }
            );

1 个答案:

答案 0 :(得分:0)

通过使表单成为标准的html表单解决了这个问题,添加了一个带有http的URL.Action,这使得在执行新帖子时刷新了网址