当前位置: 首页 > 面试题库 >

为什么PartialView无法在MVC中重新加载Ajax

尉迟景福
2023-03-14
问题内容

我使用弹出窗口创建新记录,并view在窗口内部渲染。除此之外,我还partialview根据其中一个组合框的selectedindex在此视图中调用a
。我可以成功将表单发布到Controller并在出现错误时将其返回到视图。但是,返回表格后,只有view零件返回,而我无法渲染partialview。因此,partialview在提交表单之前,我又如何将其呈现为最后状态?

视图:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>



<div id="target">

@using (Ajax.BeginForm("_Create", "Issue",
        new AjaxOptions
        {
            HttpMethod = "POST",
            InsertionMode = InsertionMode.Replace,
            UpdateTargetId = "target"
        }
        ))
{

    @Html.AntiForgeryToken()

    <div class="container">

        @Html.ValidationSummary(true)

        @Html.LabelFor(m => m.ProjectID)
        @(Html.Kendo().DropDownList())
        //... some stuff (removed for clarity)

        @*Render Partialview according to Dropdownlist's selectedIndex*@
        <!-- Place where you will insert your partial -->
        <div id="partialPlaceHolder" style="display:none;"></div>

    </div>

    <div class="modal-footer">
        @(Html.Kendo().Button()
                .Name("btnCancel")
        )
        @(Html.Kendo().Button()
            .Name("btnSubmit")
        )
    </div>
}

</div>


<script>

//Render Partialview according to Dropdownlist's selectedIndex
$('#ProjectID').change(function () { /* This is change event for your dropdownlist */

    /* Get the selected value of dropdownlist */
    var selectedID = $(this).val();

    /* Request the partial view with .get request. */
    $.get('/Issue/RenderPartialView/' + selectedID, function (data) {
        /* data is the pure html returned from action method, load it to your page */
        $('#partialPlaceHolder').html(data);            
    });

});

</script>

问题答案:

在这种情况下,您需要在没有HTML帮助程序的情况下进行自定义ajax发布。创建一个普通表格:

<form id="frmEdit" class="form">
    @Html.AntiForgeryToken()
    <div class="container">
        @Html.ValidationSummary(true)
        //.... rest form component
        <button id="btnSubmit" type="submit">Submit</button>
    </div>
</form>

并通过jquery像这样发布

<script>
$( "form" ).on( "submit", function( event ) {
    event.preventDefault();
    $.post(urlPost, $(this).serialize()).done(function(){
        // update your target id here and re-fetch your partial view
    }).fail(function() {
        // show error in validation summary
    });
});
</script>

希望此示例可以帮助您解决问题。



 类似资料:
  • 我有一个部分视图,我正在发送两个参数,然后尝试使用$(“#div”).html(结果)刷新部分视图div。使用mvc操作将数据正确地发送到partial view,并且我在控制台中看到partial view正在通过ajax调用进行更新。所有工作都按预期进行,但mainview中的部分视图从未得到更新或刷新。所以我总是第一次看到SubscriptionID和EntityOrganizationID

  • 似乎自从我们将tomcat升级到Version8+后,我们在启动时就会重新加载上下文。然而,这似乎只发生在我们的开发环境中(带有eclipse和Tomcat8.5的windows OS)。我们的生产环境(带有Tomcat8.5的linux OS)不存在此问题。我把它贴在下面,但我没有看到任何迹象表明为什么会发生这样的tomcat日志。我知道这是正常的行为,在web应用程序目录中的一些东西被改变,但

  • 本文向大家介绍JQuery异步加载PartialView的方法,包括了JQuery异步加载PartialView的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JQuery异步加载PartialView的方法。分享给大家供大家参考,具体如下: 需求:页面上有dropdown之类的控件,当选择里面不同值的时候,下面关联的内容跟着改变。 思路:把与 dropdown关联的会改变的内容放到

  • null t错误显示为: null DataTables警告:表ID=Slave-Requested未知参数'0'用于行0,列0。有关此错误的详细信息,请参阅http://datatables.net/TN/4 null 我通过进行API调用得到的数据如下: 请帮帮我。如果你想要更多的信息就问。

  • 问题内容: 我想使用JavaScript 重新加载。到目前为止,我发现的最好方法是将iframe的属性设置为其自身,但这并不是很干净。有任何想法吗? 问题答案: 注意,在Firefox中,不能通过id进行索引,而只能通过名称或索引进行索引

  • 问题内容: 这是我的项目的布局: 这是Jenkins工作区的布局: 在eclipse下,测试运行没有任何错误。在詹金斯身上,测试只是失败了。Jenkins无法找到资源。以下是测试执行的一些输出: eclipse Jenkins 如您所见,Jenkins找不到我的资源。 我想念什么? 问题答案: 我终于解决了我的问题。在类路径上,该文件是在我的代码中调用该文件时命名的。您注意到大写了吗? 在Wind