您好我无法使用嵌入式js文件。
我尝试了以下所有方法:
使用以下任何方法无效:
ScriptManager.RegisterClientScriptResource(Page, GetType(), "MyNamespace.MyScriptFile.js");
Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.MyScriptFile.js");
Page.ClientScript.RegisterClientScriptInclude(GetType(), "key",
Page.ClientScript.GetWebResourceUrl(GetType(), "MyNamespace.MyScriptFile.js"));
对资源的请求返回404页面,其中列出了例外:"*[HttpException]: This is an invalid webresource request.*"
使用ScriptManager.RegisterClientScriptResource会产生异常:
"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"
答案 0 :(得分:3)
在您的示例代码中,您正在调用GetType()...该类型用作搜索的起点。根据您调用GetType()的位置,您可能无法获得预期的结果。由于ASP.NET动态编译页面和自定义控件的类型,因此GetType()可能会返回由ASP.NET构建的新程序集中定义的类型。
您可以尝试使用typeof(SomeType),其中SomeType适合您的资源位置(例如您正在使用的控件类型)。
答案 1 :(得分:2)
也许您的资源文件位于项目中的文件夹中? 如果是这样,您应该在程序集中指定另一个名称/位置字符串,并在注册脚本时
Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.Folder1.Folder2.MyScriptFile.js");
[assembly: WebResource("MyNamespace.Folder1.Folder2.MyScriptFile.js", "text/javascript")]
通常这是一个常见的问题
答案 2 :(得分:1)
尝试实现自己的ScriptManger,然后从那里添加嵌入文件。这是一个例子
public class MyScriptManager : System.Web.UI.ScriptManager
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "MyNamespace.MyScriptFile.js");
}
}
答案 3 :(得分:0)
这个问题的另一个原因 - 你的Global.asax太过沉重了,你已经说过规则之后的其他一切都会给你主页。对我来说不是那么聪明,浪费了一两个小时!