Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ScriptManager.RegisterClientScriptInclude注册JavaScript文件_C#_Javascript_.net - Fatal编程技术网

C# 使用ScriptManager.RegisterClientScriptInclude注册JavaScript文件

C# 使用ScriptManager.RegisterClientScriptInclude注册JavaScript文件,c#,javascript,.net,C#,Javascript,.net,我一直在做典型的倾斜代码注册(经典asp的东西),就像这样,在我的页面底部: <script type="text/javascript" language="javascript" src="../searchCommonClientCode.js"></script> 到现在为止,这一切都很顺利。。。我正在将应用程序切换到.net,并动态生成一些上面所使用的列表,但是现在计时已关闭。如何使用ScriptManager.RegisterClientScriptIn

我一直在做典型的倾斜代码注册(经典asp的东西),就像这样,在我的页面底部:

<script type="text/javascript" language="javascript" src="../searchCommonClientCode.js"></script>

到现在为止,这一切都很顺利。。。我正在将应用程序切换到.net,并动态生成一些上面所使用的列表,但是现在计时已关闭。如何使用ScriptManager.RegisterClientScriptInclude注册上述代码文件?是的,我已经在谷歌上搜索过了,但是可用的材料,嗯,没有什么帮助


谢谢。

我猜您的脚本以前可以工作,特别是因为它被放在文档的末尾,而现在无法工作,因为脚本管理器在您的文档的前面包含了它,并且您假设一些DOM元素将在那里(编辑:或您在发布初始问题后的评论中提到的数组)-在加载脚本时,这些数组不存在

我将给出一个使用jQuery的例子——但即使您不使用jQuery,这也是非常有用的……您只需要用必要的位替换非jQ版本……但我认为这会让人明白这一点

现在你可能正在做这样的事情:

 doSomething();
您需要这样做:

 $().ready(function() { doSomething(); });
这将导致代码仅在页面加载完成后运行

编辑:

$().ready()的非Jq版本;此处:

根据您的评论编辑“有一个数组正在生成,它使用,它需要加载后…”

您能否将脚本中的任何内容放入函数中,并在生成数组后调用该函数?这将是相当标准的,而不是依赖于某些不可预测且容易更改的任意页面加载序列

编辑:因为你对我的答案投了反对票,很明显,这个问题很模糊——也许你只是对如何使用RegisterClientScriptInclude感到困惑(这似乎与您在计时方面的其他问题无关-它肯定不会神奇地解决您的任何计时问题-而且您完全依赖脚本加载计时/排序这一事实似乎是一个问题-但无论如何,我将把它放在这里-因为,只是可能,这是您真正想知道的):

有三个函数可用于在ASP.NET中注册客户端脚本:

  • RegisterClientScriptInclude(您引用的一个)
  • RegisterClientScriptBlock
  • RegisterStartupScript
,及

RegisterClientScriptBlock的示例相对简单:

// Define the name and type of the client scripts on the page.
String csname1 = "PopupScript";
Type cstype = this.GetType();

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;

// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(csType, csName))
{
  StringBuilder csText = new StringBuilder();
  csText.Append("<script type=\"text/javascript\"> function DoClick() {");
  csText.Append("Form1.Message.value='Text from client script.'} </");
  csText.Append("script>");
  cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
}
//定义页面上客户端脚本的名称和类型。
字符串csname1=“popuscript”;
类型cstype=this.GetType();
//从Page类获取ClientScriptManager引用。
ClientScriptManager cs=Page.ClientScript;
//检查客户端脚本是否已注册。
如果(!cs.IsClientScriptBlockRegistered(csType,csName))
{
StringBuilder csText=新建StringBuilder();
Append(“函数DoClick(){”);
Append(“Form1.Message.value='Text from client script.'}”);
RegisterClientScriptBlock(csType,csName,csText.ToString());
}
没有比这更简单的了…剪切和粘贴。替换为js引用

网上有教程:


根据您以前将脚本放在页面底部的注释,您可能应该使用“RegisterStartupScript”而不是“RegisterClientScriptInclude”如果您想要的结果与以前的结果更相似。

为什么您不能将其放在您的aspx页面的顶部?时间问题,它使用的是一个正在生成的数组,需要在之后加载…如果我的答案没有帮助,您能澄清问题以便我可以适当地修改我的答案吗?我理解您的意思你说,但是你真的读过我的帖子吗?我很好奇为什么每个人都觉得有必要推动jquery…我给了一个链接,告诉你如何在没有jquery的情况下做同样的事情-有什么问题吗?你说你的脚本在添加脚本引用自己和底部时可以工作-但是现在你切换到了.net,它在Scr中无法正常工作iptManager?我回答了为什么会这样——如果我误解了你,没关系……你可以澄清一下……没有理由因为我试图提供帮助而否决我?