以编程方式将Javascript文件添加到.net中的用户控件

sar*_*ake 16 javascript asp.net user-controls

如何以编程方式将Javascript文件添加到用户控件?

我希望用户控件是一个完整的包 - 也就是说我不想在它使用的页面上添加与用户控件相关的javascript,当我可以在控件本身内完成时.

由于用户控件中没有Page对象,你会怎么做?

sar*_*ake 26

在control.ascx.cs文件的Page_Load方法中:

LiteralControl jsResource = new LiteralControl();
jsResource.Text = "<script type=\"text/javascript\" src=\"js/mini-template-control.js\"></script>";
Page.Header.Controls.Add(jsResource);

HtmlLink stylesLink = new HtmlLink();
stylesLink.Attributes["rel"] = "stylesheet";
stylesLink.Attributes["type"] = "text/css";
stylesLink.Href = "css/mini-template-control.css";
Page.Header.Controls.Add(stylesLink);
Run Code Online (Sandbox Code Playgroud)

这会将css和Javascript加载到主页面的head标签中,只需确保头部有runat ="server".


bar*_*tta 8

您可以使用ClientScriptManager注册客户端脚本.可以通过Control.Page属性访问页面.

Page.ClientScript.RegisterClientScriptInclude (
  typeof ( MyControl ), "includeme.js", "js/includeme.js"  );
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,对于一个完整的"完整包",它可以使用脚本作为嵌入式资源,并通过WebResource.axd处理程序获取动态URL.如果这不被认为是完全完整的,那么我想它可以放在App_LocalResources中,但它永远不会只是一个文件,除非代码和脚本是内联的.


Con*_*tra 6

与gnomixa的响应相同,只是更清洁一点:

HtmlGenericControl js = new HtmlGenericControl("script");
js.Attributes["type"] = "text/javascript";
js.Attributes["src"] = "jscript/formfunctions.js";
Page.Header.Controls.Add(js);
Run Code Online (Sandbox Code Playgroud)

来自http://www.aspdotnetfaq.com/Faq/How-to-Programmatically-add-JavaScript-File-to-Asp-Net-page.aspx