【问题标题】:MVC4, Render Partial View in Dialog Box with jQuery, How to refreshMVC4,使用 jQuery 在对话框中渲染部分视图,如何刷新
【发布时间】:2014-02-21 19:24:02
【问题描述】:

我有一个部分视图在对话框中弹出,代码如下。但是,在用户保存部分视图后,当我再次单击 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");
    });
});

【问题讨论】:

  • 我总是用 ajax 调用来刷新我的局部。在这里查看我的答案以获取示例stackoverflow.com/questions/19643864/…
  • 谢谢。我认为这就是我卡住的地方。我查看了几十个帖子,无法弄清楚如何使其动态化,因为它将基于 ID 显示一个编辑视图。我认为问题是我无法将 ID 从 View 传递到 jQuery。我最初有一个带有 data-Id 属性的 标记,我认为它传递了变量。我查看了这个动态示例 stackoverflow.com/questions/16577011/… 并没有取得任何成功
  • 如果您使用 ajax 调用,则可以使用要发送到视图的 id 设置数据参数。只要数据中的变量与控制器上的输入参数完全匹配,它就会被传递
  • 让我试试,我会发布我的代码
  • 我能够单步执行一些 jQuery 并且变量正确传递,但视图仍然没有弹出,所以我一定错过了其他东西

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


【解决方案1】:

所以经过长时间的搜索,我决定使用 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");
}

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2013-07-20
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多