我有两个项目,一个是控件库,另一个是我的主项目。从控件库中,我当前正在使用用户控件和一些嵌入在控件库中的 css 文件。
我可以通过在用户控件的 PreRender 事件中执行以下操作,在主项目中使用嵌入的 CSS 文件:
// Register the default CSS resource
string includeTemplate = "<link rel='stylesheet' text='text/css' href='{0}' />";
string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.WebNotify.WebNotify.css");
LiteralControl cssInclude = new LiteralControl(String.Format(includeTemplate, includeLocation));
((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(cssInclude);
我认为以类似的方式包含我的所有 javascript 文件是有意义的,因此我包含了嵌入式 javascript 文件,执行以下操作:
// Register the js
string includeTemplate = "<script type='text/javascript' src='{0}'></script>";
string includeLocation = this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "MyCompany.ControlLibrary.Scripts.MyScript.js");
LiteralControl jsInclude = new LiteralControl(String.Format(includeTemplate, includeLocation));
((System.Web.UI.HtmlControls.HtmlHead)Page.Header).Controls.Add(jsInclude);
现在,CSS 一切正常,但是我的 JS 函数在尝试调用它们时会抛出“需要对象”异常。
我的处理方式正确吗?或者是否有更好的方法将另一个程序集中的嵌入式 js 文件包含到另一个项目中?
最佳答案
就个人而言,正如其他人建议的那样,使用一些工具,例如 FireBug对于火狐浏览器,Fiddler ,或 Internet Explorer 的开发人员工具来检查对您的服务器进行了哪些调用,以及它们发回了哪些响应 - 这就是 BigBlondeViking 所指的内容。
我还会检查您是否已在解决方案中将 JS 文件标记为“构建”,而不是默认的“不采取任何操作”。
但是,确实有一种更简洁的方法来添加嵌入式脚本资源,即 ClientScriptManager 的“RegisterClientScriptResource”方法:
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Register the client resource with the page.
cs.RegisterClientScriptResource(rstype,
"MyCompany.ControlLibrary.Scripts.MyScript.js");
关于c# - ASP.Net - 如何包含另一个项目中的嵌入式 JavaScript 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312779/