宝玉的blog

专注于web开发技术
随笔 - 81, 评论 - 1563, 引用 - 157

导航

关于


目前致力于ChinaCommunityServer的开发。

msn: junminliu(at)msn.com

标签

每月存档

最新留言

  • re:发布一个爱心小软件——网页抓图
    <p>你好 我看了你的代码 不错啊,请问在asp.net C#中 没有了webbrowser 该怎么实现?</p> <p><a href="http...
    by weblogical(注册) on 2009/9/9 17:22:55
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:37
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:31
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:30
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:29
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Openlab V2.0 Beta
    <p>宝玉你好: &nbsp; &nbsp; &nbsp; 我是个.net新手,最近看了openlab(openlab_V2.0_Beta)的源码。 ...
    by isforge(注册) on 2009/6/28 10:10:25
  • re:Silverlight中,防止ComboBox抢焦点
    <p>我是初学者,您已经写了一个 组件上传的功能 。。我在2008下测试通过,,,但是弄2005测试的时候 发现 progress.aspx.cs页面的</p> <p&...
    by jxh12345j(注册) on 2009/4/7 8:55:12
  • ufnnutdh - Google Search
    ufnnutdh - Google Search
    by (匿名) on 2008/10/27 17:44:45
  • veysaync - Google Search
    veysaync - Google Search
    by (匿名) on 2008/10/5 5:20:49
  • mzgmhgio - Google Search
    mzgmhgio - Google Search
    by (匿名) on 2008/9/22 23:34:49
  • rhmhnyma - Google Search
    rhmhnyma - Google Search
    by (匿名) on 2008/9/22 7:48:44
  • re: 发布一个爱心小软件——网页抓图
    Maxthon应该有这个功能
    by passos(匿名) on 2008/7/21 20:05:23

广告

 

例如我们将一个地址"showpost.aspx?postid=1000"重写为"posts/1000.aspx",如果这个页面中有个表单(form),那么输出到浏览器的HTML中,这个表单的action属性为<form action="showpost.aspx?postid=1000">而不是我们期望的<form action="1000.aspx">,这样就会暴露我们的真实地址,而且感觉也不爽。

我们可以通过自定义页面基类,重写默认的HtmlTextWriter方法,重写属性输出WriteAttribute(string name, string value, bool encode)方法,当输出action时,将action属性的值强制转换为当前虚URL(HttpContext.Current.Request.RawUrl,上面的1000.aspx)

最后就是让所有的页面都调用这个基类,修改一下Web.config就好了
<!-- Openlab.Controls.OLPage为页面基类,Openlab.Controls为基类所在dll -->
<pages pageBaseType="Openlab.Controls.OLPage, Openlab.Controls"/>

附页面基类完整代码(参考CS代码完成):

using System; using System.IO; using System.Web; using System.Web.UI; namespace Openlab.Controls { /// <summary> /// 页面基类 /// </summary> public class OLPage : Page { public OLPage() { } Render } FormFixers }

打印 | 张贴于 2005-03-10 16:53:00 | Tag:Web技术

留言反馈

#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
我想看三味影和暴风影院
2008-01-10 22:04:00 | [匿名:章春荣]
#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
老子发帖测下klfjlasdkfjklasdfjlasdkf
lfkasdlfkjasdlkfads
llkjdfklasdjflkasdjfolasdf
flkasdjfklasjdflkasd
2007-10-17 16:51:00 | [匿名:鸟人]
#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
老子发帖测下
2007-10-17 16:50:00 | [匿名:鸟人]
#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
URL重写后我经常用,不过 form标记中的Action值也用虚拟地址还是第一次见,学习了.
2007-09-22 23:52:00 | [匿名:wedding dress]
#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
如果FORM标签在MasterPage里就不行了呀,这个问题怎么搞?
2007-09-03 10:01:00 | [匿名:lxy]
#URL重写专题 编辑
如何在URL重写后,form标记中的Action值也用虚拟地址?
2007-08-02 12:23:00 | [匿名:Emilly]
#回复: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
<!-- Openlab.Controls.OLPage为页面基类,Openlab.Controls为基类所在dll -->
<pages pageBaseType="Openlab.Controls.OLPage, Openlab.Controls"/>
这个怎么配置?
2007-07-02 10:30:00 | [匿名:bobo]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
pfjb
2006-10-24 05:31:00 | [匿名:aaaaaaaaa]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
是呀我还是不行
2006-06-20 15:19:00 | [匿名:qian81]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
用这个类以后
action值是变成虚拟的了
但提交似乎没有用了
断点调试过
button_click事件触发不了
2006-05-31 13:57:00 | [匿名:yibin2006]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
nice
2006-04-09 11:06:00 | [匿名:steven]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
我用<pages pageBaseType="GuoGuo.Controls.OLpage,GuoGuo.Controls" />

就出错了

配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

分析器错误信息: “pageBaseType”属性必须设置为有效的类型名(格式: <typename>,<assemblyname>)

总是说格式不对。我搞了好久。还是没有解决,特来请教
2006-03-10 22:21:00 | [匿名:guoshou]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
把你的代码写在要实现的这种功能的页面,如abc.aspx里,没在web.config里改,为什么不行
2006-02-06 15:50:00 | [匿名:工期]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct base class (e.g. Page or UserControl).

在asp.net2.0中编译出错。
这是为什么啊?
2006-01-01 01:25:00 | [匿名:ANtares]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
sorry,宝玉,问题已经自己解决,谢谢各位,谢谢宝玉,谢谢宝玉的blog
2005-11-09 19:46:00 | [匿名:unm]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
首先谢谢宝玉的答复。
再次打搅宝玉,不知RewritePath的传递参数为何传递不过去呢? 其中有什么玄机?
RewritePath(string,string,queryString)的参数不能取得到,这是why呢?应该有一个前后初始化的过程,可惜没有找到,晕啊

总结这次的过程,目的是通过静态url来提高搜索引擎的robot搜索,动态页面url过长robot的搜索是不会收录的。

现在就最后这一丁点问题,把人卡死。晕。其他地方都没有搜索到相关信息,所以才来此打搅宝玉的宝贵时间,真是不好意思。
2005-11-09 19:11:00 | [匿名:unm]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
to unm:
设置IIS的映射的时候,把“检查文件是否存在”的勾去掉
2005-11-08 21:37:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
打搅宝玉:
context.RewritePath(newUrl)后,从一个虚地址转向实际的一个go.aspx,但是说无法找到资源,请宝玉指点一下。

我预设:
1,Url路径指向虚的.shtml文件
2,Application_BeginRequest中解析为自己的.aspx文件
3,iis中设置.shtml的解析使用aspx的解析\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll

这样做对我本身工作量小点,简单问题对不知道的人是天大的难题,还请指点一二。
2005-11-08 13:55:00 | [匿名:unm]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
我的做法是进行两次Ulr Rewrite。
第一次是AuthorizeRequest时,将posts/1000.aspx重写为aspxshowpost.aspx?postid=1000。
第二次是PreRequestHandlerExecute时,将Url重写回posts/1000.aspx

各有各的优缺点
2005-08-24 11:54:00 | [匿名:于晓松]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
“pageBaseType”属性必须设置为有效的类型名(格式: <typename>,<assemblyname>)

报错,我检查过,对的阿
2005-08-09 20:36:00 | [匿名:JJ]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
你好,我用你的东东,如下在web.config里书写:
<system.web>

<pages pageBaseType="URl.OLPage,URl"
autoEventWireup="true"/>
。。。。。

回发后就不是虚拟的url。
但是在cs里
namespace URl
{

public class WebForm1:OLPage
{

就可以隐藏真实的url。请问为什么,谢谢!
2005-07-24 18:25:00 | [匿名:overred]
#re:如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
如何在URL重写后,form标记中的Action值也用虚拟地址?ooeess
2005-06-15 23:04:00 | [匿名:气味检测仪]
#re:如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
^_~,pretty good!csharpsseeoo
2005-05-17 21:58:00 | [匿名:露点传感器]
#如何在URL重写后,form标记中的Action值也用虚拟地址? [转] 编辑
Ping Back来自:www.donews.net
2005-05-14 15:56:00 | [匿名:马甲]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
正在找这方面的资料!
好好学习一下!!
2005-05-07 12:23:00 | [匿名:Scgw]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
实现不了啊!
2005-04-28 10:58:00 | [匿名: 隔离安全栅]
#re:如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
^_^,Pretty Good!
2005-04-16 04:41:00 | [匿名:移液系统]
#re:如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
^_^,Pretty Good!
2005-04-10 20:09:00 | [匿名:温湿度控制器]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
asdf
2005-04-07 19:37:00 | [匿名:DSF]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
宝玉 能发个完整的程序吗?我照你的代码,放进去后,没有效果呢。
2005-03-24 00:46:00 | [匿名:putizi]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
<system.web></system.web>之间
2005-03-22 10:30:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
请问
<pages pageBaseType="Openlab.Controls.OLPage, Openlab.Controls"/>
加在什么地方?
2005-03-21 23:36:00 | [匿名:putizi]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
应该是有新项目加入,这点你可以到官方论坛发帖子问问:)
2005-03-15 10:28:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
CS 数据库中除了cs_Posts 是存储提交的信息(如:一则帖子,一则Blog,Blog的一则回复,投票,相册的一则,相册的评论等)以外,还有两个辅助的表cs_Post_Categories,cs_Posts_InCategories,cs_Post_Categories表存储分类信息,原本认为信息的分类会存储在cs_Groups或者是cs_Sections中,结果都不是。
在cs_Post_Categories中包括了SectionID,同时也是作为对Section下一级的扩展,这种扩展不会影响Section本身,也就是说如果改动了Section的设置,不会影响到Section下的内容,cs_Post_Categories中包含ParentID字段,可以方便的进行多级目录嵌套,从而实现目录树结构。CategoryType字段用于识别分类的类型,目前的类型有ForumPost = 1,BlogPost = 2,BlogArticle = 3,GalleryPicture = 4,CalendarEvent = 5。

cs_Posts_InCategories表只有三个字段CategoryID,PostID,SettingsID,在我的设计中信息与信息分类通常用两个表完成,如Categories表与Posts表,Posts表中给出一个字段叫CategoryID,然后对Categories中的CategoryID进行关系连接,从而得出该信息的所属类。但是这样设计无法解决一个问题:同一篇文章要在两个类中同时显示,而不重复信息在Posts表中。而利用三个表(CS中所采用的)可以很好解决这个问题,增加程序的弹性,可以单一也可以重复。CS的Blog中发表的文章就可以同时在多个分类中进行显示,原理很简单,只要在cs_Posts_InCategories中提交CategoryID,PostID的引用即可。

个人的一点分析,仅供参考用。

另外,宝玉,ApplicationType枚举与CategoryType枚举中都有Calendar = 4,CalendarEvent = 5。,是不是CS中还有新的项目要加入,而且很可能是一个类似Hotmail中日程安排类的项目?
2005-03-15 08:54:00 | [匿名:abin]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
这部分市在HttpModule里面处理的,你可以看看components\components\siteurls.cs中的代码!
2005-03-14 15:32:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
to voodgen: 您可以考虑在action中保留url参数,这样就照样可以获取了
2005-03-14 11:05:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
我改写的是nGallery Photo Gallery 的继承页面
原来继承的是nGalleryPage : System.Web.UI.Page
现在我改写nGalleryPage : CSPage //System.Web.UI.Page
在图片的详细页面中就无法回复
2005-03-14 10:49:00 | [匿名:voodgen]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
to 宝玉 :没有想到ParentID在Section,谢谢宝玉
2005-03-14 10:44:00 | [匿名:abin]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
提交按钮不起作用的原因
我的原来的是Request.QueryString["id"]&Request.QueryString["tid"]
now action 没有这样的id 自然我也得不到遮样的参数
不知道宝玉如何解决遮样的问题
2005-03-14 10:42:00 | [匿名:voodgen]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
to abin :实际上支持无限分类,因为真正的分类是在Section表,Section中就有ParentID
to voodgen :
我继承这个基类,提交没有任何问题!
CS中也不会有这个问题
2005-03-14 09:50:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
宝玉,是否考虑过在“cs_Groups”中添加一个ParentID字段,让分组支持无限级,还有把CS中的留言板扩展一下,比如私人留言和公共留言(只是角色问题)。

我不知道为什么cs_Groups中没有ParentID字段,是我了解CS不够深还是CS中原本就没有这样的设计,增加ParentID字段对现有的几个组件可能帮助不大(有些论坛的Group支持不限级别的嵌套,CS中好像目前没有),但是扩展性就差了点,Group与Section如果看作是Categories,也只有两级。
2005-03-14 09:12:00 | [匿名:abin]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
我没有升级.net framework sp1
但是我从CSPage继承过来的页面提交按钮就是不起作用
下载的cs source在我的本级中运行是没有问题的
2005-03-14 09:10:00 | [匿名:voodgen]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
继承Form这样确实可以,但是改动量比较大哦
这样做对aspx和ascx的代码基本没有改动
2005-03-11 22:51:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
不好意思,你这样作还不如继承Form 去掉Action属性呢
2005-03-11 20:17:00 | [匿名:yanghx]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
CS的留言板就用了URL重写
提交按钮实效可能是因为升级.net framework sp1的缘故
2005-03-11 18:38:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
提交按钮不起作用了。
这是怎么回事?
2005-03-11 18:13:00 | [匿名:voodgen]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
宝玉 CS 中的留言本是怎么回事?
2005-03-11 16:29:00 | [匿名:abin]
#www.dev-club.com 的 Action 提交还没有实现 编辑
www.dev-club.com 的 Action 提交还没有实现
2005-03-11 12:08:00 | [匿名:playyuer]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
一个很好的技术,记下来

不过我一般用dotnet做的b/s程序,很少有在form中带server属性的
2005-03-11 11:01:00 | [匿名:lion]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
No problem:)
2005-03-11 09:24:00 | [匿名:宝玉]
#re: 如何在URL重写后,form标记中的Action值也用虚拟地址? 编辑
是否测试过修改<form>后的页面中按钮提交是否有效?
2005-03-11 09:10:00 | [匿名:abin]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0