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

本文介绍了一位开发者使用C#+ASP.NET2.0+SQL Server 2000搭建站点过程中,如何通过URLRewriter.dll和ActionlessForm.dll解决URL重写问题及提高安全性。文中详细解释了如何避免搜索引擎抓取到实际URL参数,并确保表单按钮正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        本人新建了一个站,开源部落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了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值