我的部分视图会弹出一个包含以下代码的对话框。但是,在用户保存局部视图后,当我再次单击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");
});
});
答案 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");
}