ASPX页面中不放置Form元素的问题

    在整理项目里面的代码时,结果被一个失误郁闷了一下 emdgust.gif

    事情是这样的,原来项目里面有几个页面是*.htm格式的,后来为了统一管理资源方便,就把文件改成了*.aspx的了。当然这样做是没有任何的问题,同时VS.NET也自动的添加上了相应的*.cs和*.resx文件。于是一段动态的脚本也通过Page.RegisterStartupScript()方法,来注册到页面上去。可是问题就来了,运行页面不能得到预期效果,察看aspx页面生成的html代码,居然没有发现动态注册上的代码 75_75.gif

    乱七八糟搞了半天也不得要领,不知道这个Page.RegisterStartupScript()方法出了什么问题。换了Page.RegisterClientScriptBlock()来做试验,还是什么都不能输出,真不知道ASP.NET搞得什么飞机!这样的东西也不象是bug,否则这ASP.NET还能用吗?! 郁闷了一会儿后,想想那么看看这些脚本注册方法是怎么工作的吧。于是打开Reflector,在Page类中很容易得就找到了这么一段代码:

None.gif this .RenderHiddenFields(writer);
None.gif
if  ( this ._fRequirePostBackScript  &&   ! this ._fPostBackScriptRendered)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
this.RenderPostBackScript(writer, formUniqueID);
ExpandedBlockEnd.gif}

None.gif
this .RenderScriptBlock(writer,  this ._registeredClientStartupScripts);
None.gif
this ._inOnFormRender  =   false ;
None.gif

    继续向上看,这个方法的名字叫做: internal void On FormPostRender(HtmlTextWriter writer, string formUniqueID) ...

    突然明白了原来Page.RegisterXxx()等方法需要依赖服务器端Form控件。于是跑回那些*.htm文件中一看,由于那些文件本身不用提交,所以其内容中别说服务器端Form,就连HTML Form都没有的说。于是马上加上服务器端Form控件后,问题立即解决 teeth_smile.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值