繁体   English   中英

ASP.Net-如何包含另一个项目的嵌入式JavaScript文件?

[英]ASP.Net - How do I include an embedded JavaScript file from another project?

我有两个项目,一个是控件库,另一个是我的主项目。 目前,在控件库中,我正在使用用户控件和一些嵌入控件库中的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函数在尝试调用它们时会抛出Object Required异常。

我要用正确的方法吗? 还是有更好的方法将嵌入式js文件从另一个程序集中包含到另一个项目中?

似乎还不错; 但是,在这一点上,我确实会使用客户端工具来确定是否一切都已到达并被使用(提琴手/即工具栏/萤火虫/等)。

如果我不得不猜测,我会说您的代码可以正常工作,但是您使用的任何浏览器都会忽略javascript,因为script标签没有结束标签(即<script></script> opposed to <script />); 由于某些原因,某些浏览器对此很挑剔

就个人而言,正如其他人所建议的那样,使用诸如Firefox的FireBugFiddler或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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM