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