日期:2014-05-18  浏览次数:20373 次

新人,遇到难题了,如何让派生于父类的页面继承JS脚本。功力不够,一点办法也没有,一百分,一百分,一百分,相赠
为了方便维护,我让许多的页继承于一个基类
public   class   BasePage:Page

现在想让所有继承于它的所有页中都出现以下JS代码。
<script   language= "javascript ">
                          function   Disable()
                            {
    if   (window.event.keyCode==13)
  {
  alert( '不可能回车 ');
window.event.returnValue=false;
 }
                                         
                            }
       
我应该怎么作呢??原来想在基类的Page_load中用Response.Write方法输出来着,后来发现,它输出的代码在最顶上,这样不好。

请高手给帮帮一下。
       
对了,以下的onKeyDown= "DisableKey() "事件,如何在基类中添加呢??
              <   body   MS_POSITIONING= "GridLayout "   onKeyDown= "DisableKey() ">

------解决方案--------------------
我Blog有一个文章,你可以看看,有相似之处
http://blog.csdn.net/octverve/archive/2007/07/12/1687303.aspx
------解决方案--------------------
如果是在基类中输出,还要考虑脚本块的位置问题

Page.Response.Write输出后的位置在源文件的第一行.
Page.RegisterClientScriptBlock输出后的位置会在 <form> 的下一行
Page.RegisterStartupScript输出后的位置会在 </form> 的上一行.
------解决方案--------------------
// 1.x ?
public class BasePage:Page
{
protected override OnLoad(EventArgs e) {
// 1.
Page.RegisterClientScriptBlock ( " ", @ " <script language= " "javascript " ">
function Disable()
{
if (window.event.keyCode==13)
{
alert( '不可能回车 ');
window.event.returnValue=false;
}
}
</script> ");

// 2.
/*
对了,以下的onKeyDown= "DisableKey() "事件,如何在基类中添加呢??
< body MS_POSITIONING= "GridLayout " onKeyDown= "DisableKey() ">
*/
Page.RegisterClientScriptBlock ( " ", @ " <script language= " "javascript " ">
window.onload = function () {
document.body.onkeydown = DisableKey;
} </script> ");

}
}
------解决方案--------------------
就因为 <body> 不是Server的标签,所以只能用Page.RegisterStartupScript输出一段脚本块了吗??

希望有更高明的方法

========

1. 对于单页

你可以给 body 加 runat=server
// .aspx
<body id=myBody runat=server/>

// .aspx.cs
myBody.Attributes[ "onkeydown "] = "DisableKey() "


2. 1 不适合你的需求场景
你只有想办法,通过 js 动态绑定事件,那么这个 js 只能服务器输出了

你可以使用 Response.Write

3.
我想 RegisterStartupScript 已经比较“优雅”的方案了,且它是安全的

ASP.NET 控件内部都是这样使用的


4. 假如你在 asp.net 2.0
请使用 Page.ClientScript.RegisterXXXX 等相关方法,这是 2.0 推荐的新 API