我正在从事 MVC4 开发,我正在使用模式对话框来编辑记录。我正在使用 ajaxform 将更新的值提交给控制器。到目前为止,该功能运行良好。但是我遇到了一个缓存问题,我一直在尝试解决这个问题,但没有成功。主页上的记录显示在各个选项卡中,每个选项卡都有一个编辑选项。单击编辑时,我正在模态对话框上加载相应的部分视图。在我启动模态对话框并单击取消更改选项卡并再次单击编辑后,对话框将正确加载相应的局部视图进行编辑。但是,如果我单击编辑启动模式对话框并更新值,然后再次从另一个选项卡加载模式弹出窗口,它会向我显示上一个选项卡的编辑视图,而不是我要编辑的那个。我已经调试了代码,但它似乎不是代码问题。我试图通过缓存禁用:模式对话框和应用程序级别的错误,但没有任何效果!我正在添加我的模态启动 jQuery 和模态对话框表单代码的片段。
$(".model-edit").click(function () {
var viewid = $(this).attr("id");
var key = $("#KeyField").val();
var functionurl = '@Url.Action("ShowEditModel")';
if (key != "") {
$.ajax({
type: 'POST',
url: functionurl,
cache: false,
context: this,
data: { key: key, viewid: viewid },
success: function (data) {
$('#model-editor').html(data);
$('#model-editor').dialog({ modal: true,
width: 'auto', resizable: false, autoOpen: false,
closeOnEscape: true, position: 'middle'
});
myModal = $('#model-editor').dialog('open');
$.validator.unobtrusive.parse("#EditForm");
}
});
}
});
模态对话框视图。
@using (Ajax.BeginForm("UpdateRecord",null,null,new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST", UpdateTargetId = "SelectedRecord", OnSuccess = "closeModal();" }, new { id = "EditForm" } ) )
{
<table cellspacing="3" cellpadding="3" align="left" width="950px">
<tr>
<td align="center" colspan="3">
<input type="hidden" value=@Model.CurrentStep id="CurrentStep" name="CurrentStep"/>
</td>
</tr>
<tr>
<td align="center">
@for (int i = 0; i < ((string[])Model.StepView).Count(); i++)
{
if (i == (int)Model.CurrentStep)
{
<h2 class="StepTitle">@((string)Model.StepTitle[i])</h2>
<div class="wizard-step" id=@i style="height:auto;position:relative;display:inherit">
@Html.Partial((string)Model.StepView[i])
</div>
}
else
{
<div class="wizard-step" style="height:auto;position:relative;">
@Html.Partial((string)Model.StepView[i])
</div>
}
}
</td>
</tr>
<tr>
<td align="center">
<div id="buttons" class="actionBar">
<input type="button" class="button" id="CancelButton" value="Cancel" onclick="closeModal();" />
<input type="submit" class="button" id="SaveButton" value="Update" style="float:left"/>
</div>
</td>
</tr>
</table>
<script type="text/javascript">
function closeModal() {
$(myModal).dialog('close');
}
</script>
}
我不确定是什么导致了这个问题,因为当我单击取消或使用 X 按钮关闭模式对话框时它工作得很好。但不是当我提交表单并使用相同的 JavaScript 关闭时closeModal()
。