如何在 MVC 5 中使用 JQuery 来加载视图而不是部分视图

How do I use JQuery with MVC 5 to load a View instead of a partial View

我有一个流程,它使用不同的数据多次循环访问同一视图,然后最终在流程结束时转到不同的视图。 数据是一个正在排序的列表,所以我使用 jQuery 来访问列表的顺序

我使用 jQuery 通过使用嵌入式局部视图来更新视图

查看

<div id="SequenceListPartialView">
  @{Html.RenderPartial("SequenceListPartial", Model);}
</div>

<a id="btn_acceptSequence" class="btn btn-default" >Accept sequence</a> 


@section Scripts {
    @* required for sequencing *@
    @Scripts.Render("~/bundles/jquerysortable")

    <script type="text/javascript">
        $(function() {

            //Sets the list to sortable
            $("#sequencedList").sortable(
            {

            });

            //Event handler for Accept button
            $("#btn_acceptSequence").click(function () {
                var sequenceID_CSV = "";
                $("#sequencedList").children().each(function(i) {
                    var div = $(this);
                    sequenceID_CSV += div.attr("id") + ':' + i + ',';
                });
                $.ajax({
                        url: "@Url.Action("UpdateSequence")",
                        type: "POST",
                        //dataType: "json",
                        contentType: "application/json; charset=utf-8",
                        data: JSON.stringify({ orderedIds: sequenceID_CSV }),
                    })
                    .success(function (result) {
                        $("#SequenceListPartialView").html(result);
                    })
                    .error(function(xhr, status) {
                        alert(status);
                    });
            });
        });
    </script>
}

服务器端 服务器操作数据,创建新模型并将其发回

return PartialView("SequenceListPartial",myModel);

所有这些都有效。

我的问题是在流程完成时结束,我想 return 完整查看

return View("OverView", MyOtherModel);

因为我使用 $.ajax 调用(我认为)我的新视图作为部分视图嵌入到之前的完整视图中。

如果我不使用 $.ajax 来调用局部视图,而是为我要排序的每个列表调用一个新视图,那对我来说会更好,但我已经尝试这样做并且无处可去。

我的问题是:

  1. 我可以 "abort" 在我的 ActionResult 中调用 ajax 和 return 视图
  2. 我可以使用不同的技术来始终调用视图而不是 Ajax/Partial 视图
  3. 我正在学习 MVC,所以如果这完全是错误的方法,我想知道正确的方法

我对你的描述有点困惑,我认为你实际上在谈论别的东西。视图和分部视图之间的唯一区别是视图呈现您的布局模板,分部视图则不会。就是这样。

Ajax 没有部分视图与完整视图的概念,它只会将返回的 HTML 放在您指定的任何位置。所以很有可能,你只是没有告诉它把 HTML 放在正确的位置。如果你要替换整个东西,那么你想替换根 html 节点上的 html。