【发布时间】: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