我正在开发一个mvc3控制器,它在搜索时加载一个页面。在主索引页面中,有一个搜索按钮,它会加载给定div中的另一个(详细信息列表)页面。
我已将分页合并到子视图(详细列表)。因此,点击“下一步”链接后,它会加载下一页。
索引页面的cshtml:flat id指的是加载详细信息列表的位置。
<div id='FlatDetailcontainer'>Select a Project for Flat Details.. Loading...</div>
<script type="text/javascript" language="javascript">
// $(document).ready(function () {
function login() {
var check = document.getElementById("rad").value;
$("input[name=selectproj][value="+check+"]").attr('checked', true);
//document.getElementById("selectproj").checked = document.getElementById("rad").value;
if (check != "") {
handleprojselect(check);
}
}
function handleprojselect(myRadio) {
// document.getElementById("rad").value = myobj["proj"];
$.get('@Url.Action("Details", "ProjectDetails")?id=' + myRadio,
function (viewResult) {
$("#FlatDetailcontainer").html(viewResult);
});
}
function createproj() {
var url = '@Url.Action("Create")';
window.location.href = url;
}
</script>
详细信息页面包含next和url操作的链接如下:
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "Details", new { page = Model.PageNumber + 1 })
@Html.Raw(" ");
@Html.ActionLink(">>", "Details", new { page = Model.PageCount })
}
else
{
@:Next >
@Html.Raw(" ")
@:>>
}
但是,此链接始终在新页面上加载,因为没有对主索引页面的div id的引用。有人可以建议如何继续这个吗?
答案 0 :(得分:0)
如果您通过AJAX调用加载页面的一部分,您还应该使用AJAX来处理您的分页。您应该创建如下所示的JS函数:
function nextPageClick(e)
{
e.preventDefault();
$.get($(this).attr("href"), //getting the URL from your link and loading the content via AJAX
function (viewResult) {
$("#FlatDetailcontainer").html(viewResult);
});
}
并将其绑定到页面加载时的分页链接:
$(function (){
$('.nextPageLink').live('click', nextPageClick);
})
请注意,“live”jQuery方法会将click处理程序分配给动态加载的内容以及现有的静态内容,因此您无需在每次重新加载数据后重新处理处理程序。
您应该在链接中添加CSS类,以便能够找到它:
@Html.ActionLink("Next >", "Details", new { page = Model.PageNumber + 1, @class="nextPageLink" })
当然,您可以使用ID或任何其他方式来唯一标识您的分页链接。