集思广益,大家来讨论讨论!!高分相送 大家来比较比较placeholder 和div的区别<asp:PlaceHolder runat="server"><div runat="server"> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有用过placeholder 这个东东 顾名思义,前者只是一个place的holder,客户端呈现的仅仅是控件而后者呈现的是<div id="xx">控件</div> 没看见我写了<div runat="server">吗? 我觉得单从效果看.没什么区别.都是提供了一个用来封装控件的容器..只不过.微软把DIV封套了.而我们又在服务器端注册了DIV..实现了PlaceHolder的功能. 没有什么区别,一个是服务端控件,一个是HTML控件(加了RUNAT也只是运行在服务端的HTML控件而已)这种比较好像没有什么意义吧,基本上,想用哪个就用哪个,只是用法不同而已. <asp:PlaceHolder runat="server">这个标记在HTML里面没有,在通过IIS解析以后,它会变成相应的控件显示出来<div runat="server">这个控件是div,有可能我们在网页上看不到它,但它却通当了控件的一个容器,也就是说这个控件是在页面中现实存在的,用它把相应的控件包起来后,虽然显示的效果和上面一样,但多了一个容器div,就是这样 后面一个的运行效率比前面一个高.前一个会保存状态,后一个似乎不保存.呈现出来的最终html(就是在浏览时-查看-源文件)有不同. 回复人: LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) 正解! 嘿嘿,经常div 和runat = server 一起用 其实要细分起来,不仅仅是两者,而是三者:<div />、<div runat="server" />、<asp:PlaceHolder runat="server" />。首先,它们的输出是一样的,后两者的TagName其实都是"div",或者说是HtmlTextWrtiterTag.Div。如果仅仅是<div />的话,ASP.NET仅仅把它当作输出的HTML流中的一部分。<div runat="server" />的话,PageParser会解释为Page层次模型中某一层的一个HtmlControl。<asp:PlaceHolder runat="server" />的话,PageParser会解释为Page层次模型中某一层的一个WebControl。然而,实际上我们应该关心的不是这个,把目光放在这个上面是完全没有意义的,一种纯粹的ASP开发者目光,就好像在讨论SomeText和<%="SomeText"%>的不同一样无聊!我们真正应该关注的是以下两个方面:1.它们作为容器时的差别。<div />对于服务器端来说不存在任何容器概念,它对服务器端来说是不存在的。<div runat="server" />是一个HtmlControl容器,<asp:PlaceHolder runat="server" />是一个WebControl容器,它们的差别就是最基本的HtmlControl和WebControl的差别,例如是否支持ViewState或者是可能进行__doPostBack()。或许你认为<div>也会调用__doPostBack是不可能,这你要看我的第二个关注点。2.从HtmlGenericControl或者PlaceHolder派生出新的类,派生类将由于它们基类是HtmlControl和WebControl的差别而限制了它们能够实现什么和不能够实现什么、应该实现什么而不应该事先什么。当然,我这里只的派生不是简单的用它们来做容器然后封装一下所作的派生,而是一个真正必须以<div>作为基础Tag的复杂控件。在今天,相信90%的人都会认为“一个真正必须以<div>作为基础Tag的复杂控件”是何等的白痴,如果以<table>为基础Tag还正常,因为<tr>和<td>必须由它来包含。<div>除了作为容器还能作为什么?但是当Web Standards推广起来,大家都支持不用table排版的时候,推行“语义网”的时候,推行用<div>来根据语义为HTML内的内容进行层次分割的时候,“一个真正必须以<div>作为基础Tag的复杂控件”就会是十分有用。至于这样一天能否到来,我也不知道,不过假如给你来设计.NET Framework,做HtmlControl和WebControl当然要做全套的,应该没什么理由把基于<div>的两个Control给放弃掉吧? 其实作用是相同的,ASP.NET的控件同HTML的服务端控件是相同的,所不同的只是属性,也就是属性名称!HTML空件属性名称比较混乱而ASP.NET的控件属性名称非常统一,而ASP.NET的控件属性名称最终还是会转化为HTML空件属性名称!差别非常小,建议如果用文本编辑器编写源代码的话用HTML空件就可以了,使用VS.NET最好用ASP.NET的控件。 就是效率问题了.这个和DataGrid,Reapter,DataListLabel , Literal 类似.他们有些功能类似,但在消耗资源方面有差异. 这个问题认真想想,真的会觉得在现在的ASP.NET体系里面差别不大,我仅仅能够说出他们存在的原因,至于应用的目标就在遥远的未来了。HtmlControl的目标很简单,所有runat="server"的东西必须解释为一个HtmlControl,所以必须有那么多个HtmlControl分别对应不同的Tag。HtmlControl也用于习惯Web开发的人,同时也作为“比WebControl节省资源”的选择。WebControl的目标则是习惯WinForm的开发者能够快速迁移到WebForm上来,通过非常类似WinForm的形式来使用控件,这些控件能够最终自动转换成对应Tag,WinForm使用者无需关注中间过程。至于实际开发,你要用到什么觉得不顺手时,最好还是自己继承Control或任何一个派生类来弄一个好用的。 不一样,如果同时在 PlaceHolder 和 div runat="server 中输出 "测试"那么,在客户端 分别是 "测试" 和 "<div>测试</div>" (不包含引号) div 的输出会在结果两端加上 <div> 标记, 而 PlaceHolder 没有。总之就是区别不大。 说到<asp:PlaceHolder runat="server"> <div runat="server">一个是Web控件,一个是Html的控件应该说一下,Web与Html控件实现核心是完全不一样的,只是功能差不多而已Web控件比Html要简洁,效率要好些 以前我也以为WebControl和HtmlControl差别很大,但最近仔细研究后又觉得不都是System.Web.UI.Control的派生类,只不过目标复杂度不一样而已。HtmlControl是必须对应某一个Tag的,不过好像HtmlGenericControl这样的东西就可以对应任意Tag,所以对应了<div>就一定输出。WebControl目标则是实现某个对应WinForm Control,这包括设计时和运行时。但是PlaceHolder如果没有加一些特定属性,那么运行时不输出<div>也没问题,那时候就会不输出。 PlaceHolder 可以做一些动态生成代码的东西 System.Web.UI.WebControls 下面的控件实际上大多数都是对 System.Web.UI.HtmlControls 的再次包装,同时实现了设计时支持. 应该是效率方面的差别,PlaceHolder 好象没有用过!!学习ing... 关于屏蔽问题求解? 谁有.net的博客系统 源码最好 求助,DataGrid 读取表中图片时,图片显示不完整 请教dx,如何用Table服务器控件进行添加行的操作呢? 问一个关于Bolg显示方式的讨论:如何快速显示Blog内容 asp.net发送邮件的问题 ASP.NET+Oracle asp.net 生日提醒功能 高手抽时间来这~~喝杯茶——————提供给客户下载问题 asp.net开发小型门户有没有必要用 动态生成静态. 字符问题? 如何通过后台程序添加模板列!求助
这种比较好像没有什么意义吧,基本上,想用哪个就用哪个,只是用法不同而已.
<div runat="server">这个控件是div,有可能我们在网页上看不到它,但它却通当了控件的一个容器,也就是说这个控件是在页面中现实存在的,用它把相应的控件包起来后,虽然显示的效果和上面一样,但多了一个容器div,就是这样
HTML空件属性名称比较混乱而ASP.NET的控件属性名称非常统一,而ASP.NET的控件属性名称最终还是会转化为HTML空件属性名称!
差别非常小,建议如果用文本编辑器编写源代码的话用HTML空件就可以了,使用VS.NET最好用ASP.NET的控件。
这个和DataGrid,Reapter,DataList
Label , Literal 类似.
他们有些功能类似,但在消耗资源方面有差异.
那么,在客户端 分别是 "测试" 和 "<div>测试</div>" (不包含引号)
总之就是区别不大。
<div runat="server">
一个是Web控件,一个是Html的控件
应该说一下,Web与Html控件实现核心是完全不一样的,只是功能差不多而已
Web控件比Html要简洁,效率要好些
学习ing...