为什么Page.ClientScript.RegisterClientScriptInclude放在Render里边不行?

问题描述

我自定义了一个控件,该控件需要js代码,我将js代码单独放在一个文件中。使用Page.ClientScript.RegisterClientScriptInclude进行注册,最开始放在了Render中,但是总是注册不上,后来又改到OnPrender里边了,就行了,请问这是为什么?放在这两个里边有什么不同?代码如下namespaceControlLibrary{publicclassMyTestControl:WebControl{protectedoverridevoidOnPreRender(EventArgse){Page.ClientScript.RegisterClientScriptInclude("myjs","my.js");//这句话如果放在Render里边,生成的页面查看源代码时候,就没有生成<scriptsrc="my.js"type="text/javascript"/>这句话base.OnPreRender(e);}protectedoverridevoidRender(HtmlTextWriterwriter){//Page.ClientScript.RegisterClientScriptInclude("myjs","my.js");//不起作用base.Render(writer);}}}

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default2.aspx.cs"Inherits="Default2"%><%@RegisterAssembly="ControlLibrary"Namespace="ControlLibrary"TagPrefix="cc"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><div><cc:MyTestControlID="c"runat="server"/></div></form></body></html>

还有一个问题,如果这样的话,我这个自定义的控件和aspx页面并不在一个Project下,所以,js是在ControlLibrary中的,在运行aspx的时候,找不到注册时指定的路径。我想js文件是不是应该做成内嵌资源?但是具体该怎么操作?求指点。

解决方案

解决方案二:
该回复于2011-12-12 11:36:14被版主删除
解决方案三:
Render不是一个事件,当程序运行到这个阶段时,Page对象会在每个控件上调用此方法。所有的asp.net的Web服务器控件都有一个用于写出发送给浏览器的控件标记的Render方法。而PreRender是一个事件。该事件会对页面或者其控件的内容进行最后的修改。这个你一定要了解整个asp.net生命周期
解决方案四:
这个我明白,但是为什么放在PreRender中就不行呢?如何解释呢?引用2楼llftc的回复:

Render不是一个事件,当程序运行到这个阶段时,Page对象会在每个控件上调用此方法。所有的asp.net的Web服务器控件都有一个用于写出发送给浏览器的控件标记的Render方法。而PreRender是一个事件。该事件会对页面或者其控件的内容进行最后的修改。这个你一定要了解整个asp.net生命周期

解决方案五:
给你发一张图你看一下就知道了[img=D:360data重要数据桌面][/img]引用3楼nndtdx的回复:

这个我明白,但是为什么放在PreRender中就不行呢?如何解释呢?引用2楼llftc的回复:Render不是一个事件,当程序运行到这个阶段时,Page对象会在每个控件上调用此方法。所有的asp.net的Web服务器控件都有一个用于写出发送给浏览器的控件标记的Render方法。而PreRender是一个事件。该事件会对页面或者其控件的内容进行最后的修改。……

解决方案六:

解决方案七:
同意楼上的...虽然我不会..但是我看的还是那么个意思

时间: 2024-09-30 08:31:23

为什么Page.ClientScript.RegisterClientScriptInclude放在Render里边不行?的相关文章

分数不多了!!!真诚跪求!关于页面跳转的问题(Page.ClientScript.RegisterStartupScript)

问题描述 实现页面跳转需要实现1.跳转页面的同时携带参数:2规定跳转页面的大小.也就是page1跳转到page2我用如下代码实现了这两个要求Page.ClientScript.RegisterStartupScript(Page.GetType(),"message","<scriptlanguage='javascript'defer>window.open((page2.aspx?smurl="+Label32.Text+"&sec

用户- Page.ClientScript.Register

问题描述 Page.ClientScript.Register Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "<script>alert('用户名已使用,请重新输入!')</script>"); 这句话没有执行,请问怎么回事? 解决方案 你的aspx页面没有runat="server"属性的表单吧..没有的话是不会输出js脚本的~

bind事件放在if里边不能执行,放在if外边能执行,为什么?在input框中输入a时,值变成了error,求大牛

问题描述 代码如下:function chkname1(txt) {//姓氏输入验证if(txt.value=='a') { $(window).bind('load', function() {$('#a1_left').bubbletip($('#tip1_focusblur'), {deltaDirection: 'left',bindShow: 'blur',bindHide: 'focus'});});txt.value="error";return txt.value;}e

ASP.NET 2.0中控件的简单异步回调

虽然已经有了ASP.NET AJAX了,最近学习ASP.NET控件的时候,逐步理解了原始的控件异步回调(代码取自<ASP.NET 2.0 高级编程>): 首先,在Render事件中添加好一个事件 protected override void RenderContents(HtmlTextWriter output) { output.RenderBeginTag(HtmlTextWriterTag.Div); output.AddAttribute(HtmlTextWriterAttribu

(转)ASP.NET调用javascript脚本的方法总结

1.直接在前台调用 javascript 函数   很简单,在 head 元素之间加入 script 元素,将 type 元素设置为 " text/javascript " 如: <head runat="server"><script type="text/javascript" >function ShowName(str){alert("您的名字为:("+str+")");}&

后台调用前台JS函数

问题描述 前台页面函数LoadJs功能是调用一个JS文件,估计有问题<headrunat="server"><title>无标题页</title><scriptlanguage=javascript>functionLoadJs(){//alert("HelloWorld!");varKey=document.getElementById("SrcExample")Key.src="../

ASP.NET调用javascript脚本的常见方法小结_实用技巧

1.直接在前台调用 javascript 函数 很简单,在 head 元素之间加入 script 元素,将 type 元素设置为 " text/javascript " 如: 复制代码 代码如下: <head runat="server"> <script type="text/javascript" > function ShowName(str) { alert("您的名字为:("+str+&quo

ASP.NET中注册客户端脚本的三种方式

1. RegisterClientScriptBlock   把Javascript函数放在页面顶部 代码如下: protected void Page_Load(object sender, EventArgs e){  string myScript = @"function AlertHello() {                       var oText = document.getElementById('TextBox1');                      al

asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结

通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 javascript代码放到独立的js文件中,其他页面通过引入该js文件来使用相应的 javascript代码.用如下方法引用JS文件:<script src="script/admin.js" type="text/javascript"></scr