使用asp.net用户控件时我在哪里放JavaScript?

我有一个带有“更多信息”链接的用户控件。 单击该链接时,我希望显示一个div,为用户提供更多信息。

我在哪里放JavaScript? 当放置在我的用户控件的顶部时,它似乎不起作用。 当您使用用户控件时,如何处理JavaScript和jQuery? 我的母版页中包含了jQuery库。 我的常规asp.net页面有JavaScript和那些工作。

编辑:在用户控件中进行客户端编码的方式似乎是通过服务器端输出脚本,类似于asp.net服务器控件的工作方式。 令人失望的是,jQuery非常棒,但所有示例都严格嵌入到html / aspx页面中。 是否有一个资源用于jQuery与asp.net,我还没有找到?

使用ClientScriptManager.RegisterStartUpScript在服务器端的页面末尾设置脚本。 或者使用JQuery的ready事件确保加载dom,然后将客户端事件绑定到链接。

RegisterStartupScript,在页面末尾注册脚本,因此在加载页面的所有元素之后加载脚本。

另一个选择是使用JQuery的ready事件,它可以帮助您等待所有加载的DOM元素。 您可以在内联或服务器端实现就绪function。

这里的关键是等待DOM元素加载。

有很多方法可以做到这一点。 你可以在任何地方包含javascript并为该点击设置一个事件。

如果javascript只是该用户控件的一部分,并且您只希望它包含在用户控件中,则可以将其放在Web资源中并从那里访问它。

http://bchavez.bitarmory.com/archive/2008/07/28/understanding-scriptresource-and-webresource-in-asp.net.aspx

您也应该能够在用户控件中添加标签。

我更喜欢链接到.ascx文件中与特定控件关联的.js文件

 

编辑:作为注释,您可以将上面的行放在.ascx文件的底部,以便将引用与用户控件一起保存 – 而不是放在.aspx文件中。

您可以动态添加它后端逻辑,但只要您种植用户控件的主机页面具有对所述js文件的引用,您应该是好的。

如果你正在使用带有代码前端的用户控件(ascx),只需将你的javascript(jquery?)放在那里,如果没有,那么你可以在渲染控件(Render事件)时通过手动向html发出javascript或者通过ClientScript.RegisterStartupScript代替

如果您不想为启动事件硬编码JavaScript ,而是包含JavaScript文件:

首先使用脚本文件的路径调用ScriptManager.RegisterClientScriptInclude ,然后在脚本文件中使用启动函数调用ScriptManager.RegisterStartupScript 。

 protected void Page_Load(object sender, EventArgs e) { ScriptManager.RegisterClientScriptInclude( this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js")); ScriptManager.RegisterStartupScript( this, GetType(), "formatTableFunction", "formatTable()", true); }