CSDN博客

img wxiaoer2008

ASP.NET使用URL重写导致回车时默认按钮不起作用

发表于2008/9/28 23:16:00  360人阅读

        本人新建了一个站,开源部落http://www.openccc.com,用的是C#+ASP.NET2.0+SQL Server 2000+Microsoft Visual Studio 2005开发的。前台显示页面没几个,还不到十个呢,后台倒挺多的。

 

        全用的是参数,考虑到安全和搜索引擎收录问题,我用了(ActionlessForm.dll和URLRewriter.dll,可从微软官网下)URL重写,以前我只用URLRewriter.dll这个文件,就可实现了。如: /Show.aspx?id=1重写成/show/Pro_1.aspx,网址是输入/show/Pro_1.aspx时实际显示的内容是/Show.aspx?id=1,但我模板上有个按钮(一个文本框:tBoxSearch,一个按钮:imgBtnSearch),当鼠标落在按钮上时,浏览器状态栏会显示显示网址/Show.aspx?id=1,因此我在这个按钮前边加上了<a onMouseOver="window.status='';return true">,后边加上了</a>,用户是看不到实际了。但我打开IIS日志来时,搜索引擎老访问show.aspx,且不带参数,然后全转到我写好了的错误页面去了。原来搜索引擎还能知道这个的实际地址啊!没办法了,我就用了ActionlessForm.dll这个文件,在模板前边加上

 

<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

把<Form id="Form1" method="post" runat="server" defaultbutton="imgBtnSearch" >改成了<skm:Form id="skmForm" method="post" runat="server" defaultbutton="imgBtnSearch" >,

 

同时</Form >改成了</skm:Form >。这样改后,用VS就不能可视化编辑了,说组件出错。

 

      不过不影响运行,前边的问题解决了,又来了一个新的:回车时我设置的默认按钮不起作用了,要用鼠标点(defaultbutton="imgBtnSearch"),没办法,我网上查了下,知道了解决方法:在.CS文件加上

 

tBoxSearch.Attributes.Add("onkeydown", "return GetFocus();");其中 tBoxSearch是输入文本框。

 

然后在.aspx里加上

 

<script type="text/javascript">
        function GetFocus()
        {
            if(event.keyCode==13)
            {
                 document.getElementById("ctl00_imgBtnSearch").click();
              return false;
             }
        }
    </script>

 

      其中ctl00_imgBtnSearch是运行后那个按钮的ID,不运行时按钮ID是imgBtnSearch,运行我查看源代码变成了ctl00_imgBtnSearch,我就写这个,有的如Button1运行后还是Button1,那要看实际情况了。

      这样就OK了!

阅读全文
0 0

相关文章推荐

img
取 消
img