【发布时间】:2011-03-04 22:20:21
【问题描述】:
我希望有人能提供帮助,因为我对此束手无策。我想做的是这个。
- “Draggable”项目被拖放到“Droppable”区域(此方法有效)
- 这会将项目的 id 发布到我的控制器,该控制器返回它的项目类型(这有效)
- 我将返回的项目名称传递给一个函数,该函数打开一个模式并根据特定项目在模式中呈现部分视图。
最后一点是问题所在。上述所有步骤都可以正常工作,弹出模态并将部分视图呈现给模态。但是关闭对话框的按钮会引发错误“.dialog is not a function”,并且在使用角落中的“x”关闭模态框后,随后尝试打开模态框将无法正常工作,并引发类似的错误。
这是我正在使用的示例以尝试使其正常工作。
$(function () {
$('.draggable').draggable({ containment: '#imageboundry', revert: 'valid' });
$('#droppable').droppable({
drop: function (event, ui) {
$.ajax({
type: "POST",
url: '/Home/AddToCart/' + $(ui.draggable).attr("id"),
success: function (data) {
getItemType(data);
}
});
}
});
});
function getItemType(itemName) {
$('#dialogs').dialog({
open: function () {
$(this).load("AdditionalContent", { itemName: itemName }, function () {
alert("This happened");
});
},
modal: true,
resizable: false,
title: itemName,
width: 400,
autoOpen: false,
buttons: {
"Confirm": function () {
$(this).dialog('close');
}
}
});
}
这是我的控制器,它将部分视图返回到模态
public PartialViewResult AdditionalContent(string itemName)
{
return PartialView("_" + itemName + "Attributes");
}
一旦我取出open: function () { ... } 位,关闭按钮就会起作用,我可以一次又一次地重新打开模式,但是一旦我把它放回错误就会抛出。这显然是原因,但我一生都无法弄清楚原因。
在此先感谢您的帮助,很抱歉发了这么长的帖子。
更新:
我尝试在 document.ready 中初始化模态,并从第一个主函数中的“drop”函数调用它。通过这样做,我将其范围缩小到从我的控制器加载部分视图的这行代码。没有这条线,功能就可以工作。关于这有什么问题的任何想法。
$(this).load("AdditionalContent", { itemName: itemName }
【问题讨论】:
-
@Mark OB:我会创建一次对话框并在
open函数之外重新填充内容(使用.load)。我见过在一个元素上多次调用小部件时会发生奇怪的事情。你试过这样的策略吗? -
@Andrew Whitaker:我尝试了类似于在 $(document).ready 中初始化模态的方法。我没有尝试在 open 函数之外填充内容。我回家后会试一试,然后告诉你。感谢您的快速回复
-
@MarkOB:看到了更新——你看到结果在像 Firebug 这样的检查工具中回来了吗?你会收到服务器错误吗?例如,有没有可能 MVC 没有找到局部视图?
-
尝试将
{ itemName: itemName }更改为{ "itemName": itemName },看看是否与您的键名和变量名相同。 -
另外,要解决后续调用此函数的问题,请在函数顶部添加:
$('#dialogs').dialog('destroy');
标签: asp.net-mvc jquery-ui dialog