4

我是一个相对较新的 MVC 用户,并且很难让分页在 MVC 中正常工作。

基本上,我有大量搜索结果,它们以部分视图呈现(使用像这样的开始表单方法):

using (Ajax.BeginForm("Search", "Home", new AjaxOptions
{
    HttpMethod = "GET",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "searchResults",
}))
{
    <input type="text" name="searchString" />
    <input type="submit" value="Search" />
}

部分视图是这样渲染的:

@foreach (var item in @Model)

{

<li>@Html.ActionLink(item.Name, "Result/" + item.Id, "Result")</li>

}

@{if(ViewBag.HasPrevious)
    {
        @Html.ActionLink("<<", "Search", new { searchString = ViewBag.query, page = ViewBag.CurrentPage-1 })
    }
}

@{if(ViewBag.HasNext)
    {
        @Html.ActionLink(">>", "Search", new {  searchString = ViewBag.query, page = ViewBag.CurrentPage+1 })
    }
}

我的问题是 >> 或 << 链接只是创建一个带有结果列表的空白页面,并且不会保留“顶部”索引页面的标记。

有没有人对此有任何想法。

注意是这个网站的新手,我会支持任何答案。

4

1 回答 1

6

Html.ActionLink生成一个正常的锚。当您单击此锚点时,它只会将浏览器重定向到此链接指向的地址。这就是您在新窗口中看到部分内容的原因。

如果您只想刷新页面的一部分而不进行重定向,您可以使用 AJAX 链接 ( Ajax.ActionLink) 代替:

@Ajax.ActionLink(
    "<<", 
    "Search", 
    new { 
        searchString = ViewBag.query, 
        page = ViewBag.CurrentPage - 1 
    },
    new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "searchResults"
    }
)
于 2012-05-01T10:00:32.153 回答