MVC4,使用jQuery在对话框中渲染局部视图,如何刷新

时间:2014-01-29 19:14:40

标签: javascript jquery asp.net-mvc-4 jquery-ui-dialog

我的部分视图会弹出一个包含以下代码的对话框。但是,在用户保存局部视图后,当我再次单击ActionLink直到我停止调试并重新启动应用程序时,数据不会在该局部视图中刷新。但是,新记录在我的数据库中。另一个问题是,当我重新启动应用程序时,由于下面的错误,我无法更新记录。我错过了什么?感谢。

    An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.

我视图中的div标签

    <div id="assign-dialog"></div>

同一视图中的ActionLink

    @Html.ActionLink("Assign", "Edit", "Assignment", new { id = Model.InfoId}, new { @class = "assign-modal" })

jQuery

    $(function () {

$(function () {
    $('#assign-dialog').dialog({
        autoOpen: false,
        width: 400,
        height: 500,
        resizable: true,
        modal: true
    });

    $('.assign-modal').click(function () {
        $('#assign-dialog').load(this.href, function () {
            $(this).dialog('open');
        });
        return false;
    });

});

HTTP GET操作

    [HttpGet]
    [Authorize(Roles="Admin")]
    public ActionResult ViewAssignment(int id = 0)
    {
            RequestAssignment query = _assignmentRepository.GetCurrentAssignment(id);

            return PartialView("_ViewAssignment", query)
    }

更新:

我最初按照Jasen回答的动态部分中的javascript/jquery modal popup dialog MVC 4 / render partial view中的步骤进行了操作,但不知道在“客户端部分,现在为空”中放入什么内容

...好吧,所以关闭其他一些帖子,我已经读到了这是我能够提出的,但是当我点击我的链接时没有任何反应。

查看HTML

    <a href="#" class="dialog-trigger" data-infoId="@Model.InfoId">Assign</a>
    <div id="assign-modal">

    </div>

的jQuery

    //Dialog Box for Assignments
 $(".dialog-trigger").on("click", function(event) {
    event.preventDefault();
    var infoId= $(this).data("infoId");
    $.ajax({
        url: "RequestAssignment/Edit/" + infoId,
        type: "GET"
    })
    .done(function(result) {
        $("#assign-modal").html(result).dialog("open");
    });
});

1 个答案:

答案 0 :(得分:0)

所以经过一番长时间的搜索后,我决定使用Ajax.ActionLink。我知道有更好的方法,但这个方法对我有用。我要感谢@MattBodily一路上的所有帮助。

    @Ajax.ActionLink("Approve", "QuickAssign", "Assignment", new { id = Model.InfoId}, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "result", InsertionMode = InsertionMode.Replace, OnSuccess = "openDialog" })

然后是我的javascript函数

function openDialog() {

     //set the diaglog properties
     $("#result").dialog({
         title: 'Assign',
         width: 550,
         height: 'auto',
         modal: true
     });


     $("#result").dialog("open");
}