asp.net mvc3 - 始终在div中加载视图

时间:2013-07-27 10:15:45

标签: asp.net asp.net-mvc-3 pagination hyperlink

我正在开发一个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的引用。有人可以建议如何继续这个吗?

1 个答案:

答案 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或任何其他方式来唯一标识您的分页链接。