Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 被用来注册脚本块。第一个是 RegisterStartupScript 方法。当您有一个想要在页面加载时启动的 JavaScript 函数时,最好使用该类。就此列举一例,在 Visual Studio 2005 中创建一个包含两个按钮的 ASP.NET 页面。Button1 和 Button2 分别为这两个按钮的 ID。然后,在 Page_Load 事件内部嵌入以下代码 C#:
1 |
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "function AlertHello() { alert('你好,ASP.NET'); }", true); |
1 |
Button1.Attributes["onclick"] = "AlertHello()";Button2.Attributes["onclick"] = "AlertHello()"; |
RegisterStartupScript 方法的两个可能结构如下: • RegisterStartupScript (type, key, script) • RegisterStartupScript (type, key, script, script tag specification) 在上例中,您指定了类型 Me.GetType()、关键字及包含的脚本,然后是一个值为 True 的布尔值(以便 .NET 自动使用 <script> 标记将脚本嵌入 ASP.NET 页面中)。Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别 主要区别在于:RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。RegisterClientScriptBlock方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面。那么,这有何不同呢?正如我们将要看到的,这有很大的不同。 就此列举一例,以下是在页面加载到浏览器时,将焦点置于该页面上的一个文本框中的方法 – 使用利用了 RegisterStartupScript 方法:
1 |
Page.ClientScript.RegisterStartupScript(this.GetType(), "Testing", "document.forms[0]['<strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">txtText</strong>'].focus();", True) |
由于在浏览器运行到页面底部并执行此小段 JavaScript 时,就已生成了页面上的文本框,并已将其放到了页面中,因此,此方法运行正常。但是,如果不按照上述方法,而编写如下代码(使用 RegisterClientScriptBlock 方法):
1 |
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Testing", "document.forms[0]['<strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">txtText'</strong>].focus();", True) |
文本框控件将不会获得焦点,且会在页面上生成一个 JavaScript 错误(如图 1 所示)。 图 1. 执行 JavaScript 时出错 出错的原因在于,浏览器将先遇到 JavaScript,而后文本框才会出现在页面中。因此,JavaScript 将无法找到 txtText。 原文出处:http://blog.csdn.net/jiahello/archive/2009/06/29/4305855.aspx
View Detailsconst 的概念就是一个包含不能修改的值的变量。
1 |
常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。 readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。readonly 关键字与 const 关键字不同。1. const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。4.const 对于引用类型的常数,可能的值只能是 string 和 null。 readonly可以是任何类型总结const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~FROM URL:<a href="http://zhidao.baidu.com/question/286719961.html">http://zhidao.baidu.com/question/286719961.html</a> |
1. 进入.NET Framework命令提示符(从程序里面的Visual Studio Tools里面可以找到),输入:A:1.5到1.7版本ildasm "VisualSVN安装目录\bin\VisualSVN.Core.dll" /out=输出路径文件名.il B:2.0以上版本ildasm "VisualSVN安装目录\bin\VisualSVN.Core.L.dll" /out=输出路径文件名.il 如:ildasm "D:ProgramFiles\VisualSVN\bin\VisualSVN.Core.dll" /out=D:\file\reg.il2. 文本编辑器打开刚才输出的il文件,查找: .method public hidebysig static bool IsValid( 将该方法括号内的代码体对应的键值对替换如下:.maxstack 8IL_0000: ldc.i4.1IL_0001: ret 其实就是在函数体内替换了前面三行的其余全部内容。 3. 回到命令行输入"ilasm 刚才的il文件 /dll" 例如:ilasm D:\file\reg.il /dll 编译得到新的dll重命名后覆盖原VisualSVN.Core.dll(2.0以上版本覆盖VisualSVN.Core.L.dll)。 3. 破解完毕,打开VS.NET,点击VisualSVN菜单->Registration,输入任意字符点击OK注册成功。4. 此时About菜单上显示的还是"No License",觉得不好看的话,直接在il文件中查找该字符串替换成你的名字重新编译即可。 全部结束 资料来源:http://blog.csdn.net/rocket5725/archive/2008/10/25/3143119.aspx 方法还存在一些不完善的地方! from url:http://www.cnblogs.com/tchong/archive/2011/04/13/tchong1225.html
View Details