Javascript 从外部js中的函数加载jqueryui模态对话框
在ASP.NETMVC中,我试图通过调用驻留在外部js文件中的函数来显示jqueryUI模式对话框。原因是我想在某个地方写一个js方法,然后用一些参数调用它,而不是在每个页面上复制粘贴它 这是我的CustomFunctions.js文件:Javascript 从外部js中的函数加载jqueryui模态对话框,javascript,asp.net-mvc,jquery-ui,modal-dialog,jquery-ui-dialog,Javascript,Asp.net Mvc,Jquery Ui,Modal Dialog,Jquery Ui Dialog,在ASP.NETMVC中,我试图通过调用驻留在外部js文件中的函数来显示jqueryUI模式对话框。原因是我想在某个地方写一个js方法,然后用一些参数调用它,而不是在每个页面上复制粘贴它 这是我的CustomFunctions.js文件: function CustomFunctions() { }; CustomFunctions.prototype.loadModalDialog = function (dialogDivID, callerElementDivID, dialogSize
function CustomFunctions() { };
CustomFunctions.prototype.loadModalDialog = function (dialogDivID, callerElementDivID, dialogSize, actionControllerName, container)
{
var dialogElement = $('#' + dialogDivID);
var callerElement = $('#' + callerElementDivID);
dialogElement.dialog
(
{
autoOpen: false,
show: "slide",
width: dialogSize,
resizable: false,
modal: true
}
);
callerElement.click(function()
{
dialogElement.load("@Url.Action(" + actionControllerName +")", function()
{
$(container).dialog('open');
});
return false;
})
}
现在,在我的List.cshtml视图中,我编写了以下内容:
@Html.ActionLink(
"click me",
"List",
new {string.Empty},
new { onclick = "Javascript:showModal();" }
);
@Scripts.Render("~/bundles/custom");
<script>
function showModal()
{
var custom = new CustomFunctions();
custom.loadModalDialog("my-dialog", "show-modal", 400, "List", this);
}
</script>
@Html.ActionLink(
“点击我”,
“名单”,
新的{string.Empty},
新建{onclick=“Javascript:showmodel();”}
);
@Scripts.Render(“~/bundles/custom”);
函数showmodel()
{
var custom=新的CustomFunctions();
custom.loadModalDialog(“我的对话框”,“显示模式”,400,“列表”,此);
}
问题是模式对话框不会弹出。在客户端调试中,它进入loadModalDialog,正确地找到所有变量,遍历所有js代码,不会抛出错误(这让我感到困惑),但不会显示对话框
我错过什么了吗?
谢谢,这在外部js文件中不起作用 @Url.Action(“+actionControllerName+”) 这在和模板内联时起作用,因为tempplate在发送到客户机之前就被复制和渲染了。当它被放入exteralJS文件时,它是一个文本字符串 custom.loadModalDialog(“我的对话框”,“显示模式”,400,“列表”, 这可能不是你所期望的 在代码的这一点上传递
此
就是传递文档或窗口对象。然后尝试调用容器上的dialog('open')
,该容器不是您期望的对话框对象
还有在document.ready
事件之外调用jquery的问题。除非在页面加载后调用showmodel()
,否则jquery函数将无法工作
任何最新的Bowser都有用于调试js的javascript/控制台。DOM中是否存在id为
my dialog
的元素?调试时,它会正确地将其作为HTMLLevel。这回答了你的问题吗?谢谢,您是否检查了
以查看是否为ui对话框应用了适当的类这正是我所做的。我让它在一个页面上工作,然后在一个单独的js中移动该方法并使其可配置。为什么我不能工作?这是从Darin的回答中得到的:你的例子中的“This”不起作用,我不明白为什么它应该起作用-我的意图是调用javascript,而不是将模型对象作为查询字符串发送(这就是你的代码所做的,我只是尝试过)我编辑了上面的响应。但是是的,上面的代码不起作用。我引用你的评论只是为了指出问题所在。我对Url做了更多的研究。行动起来,看起来你是绝对正确的。我正在做的事不会发生。因此,我接受这一点作为答案,但我需要继续寻找替代方案,将我的Java脚本集中在一个文件中,而不是将它们复制粘贴到MVC项目中的所有视图上(这就是我的问题的目的)。感谢您将url而不是controllerActionName
传递给函数。然后在配置自定义对象时,从videw调用@Url.Action(…)
。