ASP.NET和jQuery - 从代码后台调用

3
这是一个我曾经尝试过解决但放弃的问题。基本上,我正在使用ModalPopupExtenders(来自AJAX.NET)来显示带有一些内容(文本、控件等)的面板,并从代码后台调用它。它工作得很好。
但现在我想用一些jQuery对话框框架来替换ModalPopup。问题是如何从代码后台调用它。据我所知,我必须在RegisterStartup事件上注册jQuery库,但我已经尝试过了,但没有成功从代码后台调用jQuery。
有人能帮帮我吗?我真的想替换ModalPopup,因为它们给我带来了太多麻烦。
提前感谢您。
protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "registerDialog",
        "$(function() { $('#dialog').dialog({autoOpen:false, show:'blind'}); });", true);
}

protected void Button1_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "openDialog",
        "$('#dialog').dialog('open');", true);
}

这是正确的方式吗?我必须先注册才能保持隐藏。谢谢。

2个回答

4
如果您正在使用ScriptManager,请使用RegisterStartupScript(),如下所示:
ScriptManager.RegisterStartupScript(this, GetType(), "modalscript",
    "$(function() { $('#dialog').dialog(); });", true);

如果您没有使用ScriptManager/UpdatePanels,请使用等效的ClientScriptManager版本
重要的是要记得将您的代码包装在一个document.ready处理程序中(IE没有它会有最多的问题),这样您的元素(在我的示例中,id="dialog")就在DOM中并且准备好了。

谢谢Nick。 当你说要将我的代码包装在document.ready中时,在我展示的下面示例中,我已经从ScriptManager.RegisterStartupScript做了所有的事情。 有什么我应该改变的吗?我想在document.ready中编写registerDialog,但我不知道是否相同。 - Gui
@Guilherme - 如果是这种情况,请将“this”(第一个参数)更改为您所在的UpdatePanel,另外,在RegisterStartupScript调用中,您没有使用“$(function(){});”包装器,请确保执行此操作 :) - Nick Craver

1

你实际上不会从后端代码中调用jQuery,你只需要编写一些额外的JavaScript代码,在页面加载后(PostBack之后)运行。

在这个启动代码中,你可以进行jQuery调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接