asp mvc部分页面视图更新,ajax无法正常工作

时间:2015-10-06 22:17:56

标签: jquery ajax asp.net-mvc

在尝试了未知数量的变化后,我得出结论,我需要寻求帮助。

我只是试图在我的控制器中调用一个使用jquery ajax功能呈现局部视图的方法。我无法看到我做错了什么,关于这个主题的所有信息,我猜这将是一件容易的事,但我错过了一些东西(我在猜测,真的很明显)并且无法弄清楚是什么。

_Layout.cshtml(母版页)

<script src="@Url.Content("~/Content/Scripts/jquery-1.10.2.js")"></script>
<script src="@Url.Content("~/Content/Scripts/jquery-ui-1.11.4.js")"></script>
<script src="@Url.Content("~/Content/Scripts/clickableRow.js")"></script>
<script src="@Url.Content("~/Content/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Content/Scripts/jquery.validate.unobtrusive.min.js")"></script>

MyController.cs(局部视图方法)

[ChildActionOnly]
public ActionResult _MyPartialView (int page = 1)
{
    ModelData pt = new ModelData ();
    List<ModelData > md = pt.PagesOfData(page);
    return PartialView(md);
}

_MyPartialView(行ommited ....)

@{
Layout = null;
}
<div id="myDiv">
    <form id="theFormToRefresh ">
        ......SOME FIELDS......
    </form>
</div>

我试过的一些javacript

尝试x

$().ready(function () {
    $(".page-number").on("click", function () {
        var selectedPage = parseInt($(this).html());

        $.ajax({
            url: '@Url.Action("_MyPartialView")',
            type: "POST",
            datatype: "html",
            data: selectedPage,
            success: function (data) {
                $('#myDiv').empty();
                $('#myDiv').html(data);
            }
        });
    });
});

尝试y

$().ready(function () {
    $(".page-number").on("click", function () {
        $("#myDiv").load('@Url.Action("_MyPartialView", "MyController")');
    });
});

尝试Z

$().ready(function () {
    $(".page-number").on("click", function () {
        var selectedPage = parseInt($(this).html());
        $.ajax({
                url: '@Url.Action("_MyPartialView", "MyController")',
                data: { "page": selectedPage },
                success: function (data) {
                    $("#myDiv").html(data);
                }
            });
    });
});

1 个答案:

答案 0 :(得分:1)

_MyPartialView()方法使用[ChildActionOnly]进行修饰,这意味着该方法只能在视图中作为子方法调用,例如使用

@Html.Action("_MyPartialView", new { page = 1 })

由于用户请求(使用链接,地址栏或ajax)导航到它,无法调用它。

如果要使用ajax调用它,则需要从方法中删除该属性。