MVC分页与局部视图

4

我是一个相对较新的MVC用户,在MVC中,我在实现分页功能方面遇到了困难。

基本上,我有一堆搜索结果,它们以部分视图的形式呈现(使用类似以下方式的begin form方法):

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 })
    }
}

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

有人对此有什么想法吗?

注意:我是新手,我会给任何答案点赞。

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"
    }
)

非常感谢,那个完美地运行了!请问 HTML 和 AJAX 链接之间有什么区别,这样我以后就知道了? - Tom Kealy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接