【问题标题】:Adding JavaScript To Many Pages(More than 500) in asp.net without MasterPage在没有 MasterPage 的 asp.net 中将 JavaScript 添加到许多页面(超过 500 个)
【发布时间】:2014-12-15 15:36:33
【问题描述】:

我正在处理有超过 500 个 .aspx 页面的项目(弹出窗口使用 ShowModelDialog)我想要为每个页面抑制/禁用 Enter 键

我想为每个页面(所有 Popup)或用户提出的每个请求添加以下代码。 很遗憾项目中没有母版页

<script type="text/javascript">

function stopRKey(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
}

document.onkeypress = stopRKey;

</script> 

void Application_BeginRequest(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown
        System.Web.UI.Page mypage = (System.Web.UI.Page)HttpContext.Current.Handler;
        if (mypage != null)
        {
            mypage.ClientScript.RegisterClientScriptBlock(GetType(), "MyScriptKey", "alert('hi')", true);
        }

    }

我尝试在Global.asax 中添加此脚本Application_BeginRequest 但没有运气

【问题讨论】:

  • 您没有显示用于添加脚本的代码,但会话开始无疑是错误的地方。也许你是从错误的角度来处理这个问题的——你应该使用母版页来抽象通用功能,而不是试图在其他地方偷工减料。
  • 为什么不引入母版页?
  • @Stilgar 需要很长时间,因为项目中有很多页面
  • 我认为创建一个类,你的页面是否继承,在类上使用 ScriptManager.RegisterStartupScript 来注入 js?
  • 如果你的架构很差,那么做任何事情都需要很长时间。最好硬着头皮把事情做好。

标签: javascript asp.net .net page-lifecycle


【解决方案1】:

如果您需要编辑大量文件,如何进行很大程度上取决于您使用的平台以及您可以使用的工具。

在 Windows 上,我会使用 Notepad++。有了它,您可以对子目录中的多个文件进行搜索和替换,只过滤某些类型的文件(*.asp 或 *.php)并使用正则表达式来搜索和修改文本:

CTRL-F 打开查找对话框。 转到“在文件中查找”选项卡。 根据需要选择目录和过滤器。 选择“搜索模式”=“正则表达式”和 使用

(</body>)

对于“查找内容”字段和

***YOUR SCRIPT IN A SINGLE LINE HERE*** \r\n \1

用于“替换为”字段。

注意用于在文件中再次放置结束正文标记的“\1”(否则它将被覆盖)。

在 unix 和 mac 上,您可能可以使用一些具有 PCRE 正则表达式编辑功能的等效文本编辑器,但恐怕我无法帮助您。

【讨论】:

    【解决方案2】:

    我在Global.asax 文件中使用了Application_PreRequestHandlerExecute 事件,它起作用了。

    void Application_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            HttpContext context = ((HttpApplication)sender).Context;
            Page mypage = context.CurrentHandler as Page;
            if (mypage != null)
            {
    
                mypage.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), @"function stopRKey(evt) {
              var evt = (evt) ? evt : ((event) ? event : null);
              var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
              if ((evt.keyCode == 13) && (node.type=='text'))  {return false;}
               }
                document.onkeypress = stopRKey; ", true);
    
    
                mypage.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), @"function validatedot(val, evt) {
                var theEvent = evt || window.event;
                var key = theEvent.keyCode || theEvent.which;
                key = String.fromCharCode(key);
    
                y = val.value.split(/\./);
    
                var regex = /[0-9]|\./;
    
                if (y.length > 1 && key == '.') {
    
                    theEvent.returnValue = false;
                    if (theEvent.preventDefault) theEvent.preventDefault();
                }
                if (!regex.test(key)) {
    
                    if (theEvent.keyCode != 8 && theEvent.keyCode != 9) {
                        //alert('Enter only number');
                        //alert(theEvent.keyCode);
                        theEvent.returnValue = false;
                        if (theEvent.preventDefault) theEvent.preventDefault();
                    }
                }
    
    
            }", true);
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      相关资源
      最近更新 更多