我已经阅读了很多关于这个主题的不同帖子,我将继续这样做并尝试各种事情。尽管信息差异很大,但由于我对 MVC 等相对缺乏经验,我觉得我有点绕圈子。
情况是这样的。我正在 MVC3 应用程序中显示 (Razor) 视图,其中包含 jqGrid 中的记录。双击记录会在 jQuery UI 对话框中打开该记录。原始视图仅包含代表对话框的视图。调用的操作返回一个部分视图,该视图成为对话 div 的内容。
function editItem(gridID, url) {
var rowID = getSelectedRowID(gridID);
if (rowID == null) {
alert('No row selected.\r\nPlease select a row and try again.');
return;
}
else {
var grid = getGrid(gridID);
$("#editDialogue").load(url + "/" + grid.SelectedRowID, function (html) {
$("#editDialogue")[0].value = html;
$("#editTabs").tabs();
$("#editDialogue").dialog("open");
});
}
}
该部分有效,尽管我有一种感觉它可以经受一些清理。我真正的问题是稍后提交该对话框中包含的表单。它应该回发到具有相同名称的操作,它确实这样做了。该操作应该验证并保存或返回带有验证错误的相同部分视图。目前我正试图返回视图而不做任何其他事情。视图返回正常,但整个页面被替换,而不仅仅是对话框的内容。
我尝试了各种方法,包括使用 Ajax.BeginForm 并将对话框 div 的 id 指定为 AjaxOptions 的 UpdateTargetId。到目前为止还没有任何效果。请注意,正在提交的表单位于 div 内部,因此它也会被替换。不确定这是否是问题的一部分。
我现在正在收拾行李,所以我想我应该发帖看看晚上会发生什么,然后在早上再次解决这个问题。
杰姆西尼尼,
您设置 AjaxOptions.UpdateTargetId 是正确的,但您还需要将 AjaxOptions.InsertionMode 设置为 InsertionMode.Replace。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)