日期:2014-05-18  浏览次数:20409 次

什么时候用html控件,什么时候用"标准控件"?
从asp转过来
有很多原则性的东西不是很明白
也不是很习惯

希望大家多多指教

最后有人能提供一下完整的文档方案

先行谢过!

------解决方案--------------------
其实这没什么好问的, 买本书看看, 就明白了.
一般认为涉及到后台代码的就是WEBCONTROL, 其它用HTML
------解决方案--------------------
看自己喜欢用什么了
------解决方案--------------------
服务器控件的最终结果也是生成HTML代码返回到客户端的,中间有个编译的过程
所以,在非必要使用的情况,都不用,如Lable,总不能每个文字显示都用它吧
------解决方案--------------------
一般你要在后台引用的就用服务器端控件,不然就用html控件
------解决方案--------------------
web控件可以在后台方便调用
html只能在客户端脚本中调用 如果要在服务器端调用只需 在html控件中加入runat= "server "

web控件很难控制样式和布局
html控件很容易控制页面布局和样式 所以一般web控件嵌套在做好样式和布局的html控件中

就这么点差别
------解决方案--------------------
能不用服务器端控件尽量不用
能用html控件就不要用web控件
服务器端控件效率低
------解决方案--------------------
控件一般是给非专业人士准备的,就是只会拖动鼠标的那些人,专业开发人员很少用的;
微软核心的东西很不错,但外围的很多是垃圾~
------解决方案--------------------
回复人:viena() 维也纳(windows7) ( 四星(高级)) 信誉:100
能不用服务器端控件尽量不用
能用html控件就不要用web控件
服务器端控件效率低
--------------------

够明白了
------解决方案--------------------
能不用服务器端控件尽量不用
能用html控件就不要用web控件
服务器端控件效率低

=======

前两句同意,至于后一句,

效率上,纯 html 肯定比 runat=server 低,

对于 runat=server ,事实上 asp.net 内部帮我们作了许许多多的工作,比如

在 asp/php/jsp 中需要
<input type=text name=MyTextBoxName value= ' <% =Request.Form[ "MyTextBoxName "] %> ' />
来维护两次post之间的状态


<asp:textbox/> 帮我们做了这项工作,其内部也是使用 Request.Form 类获取值,然后经过一系列的处理周期(asp.net基于事件驱动)

在一个页面上,前者,只是一个字符流的输出,后者涉及对象的创建,控件层次的维护,大量相关页、控件事件同步,ViewState维护

比如必然导致额外的性能损耗,

但,它带来的是,【开发效率成倍的提升,完整的组件编程模式....】
你不必再一堆的 Request.Form 中绕,你可以引用服务器控件对应,统一的编程模型

1.
string txt = Requst.Form[ "MyTextBoxClientName "];

VS

string txt2 = MyTextBoxServerID.Text;

2.

// js
document.form1.action = "?action=delete "
// aspx.cs
if(Requst.QueryString[ "action "] == "Delete ") {
// 执行删除操作 ...
}

VS

// aspx
<asp:Button Click =DeleteButton_Click ...

// aspx.cs
void DeleteButton_Click( ...
{
// 执行删除
}
------解决方案--------------------
VMM,写个for循环显示数据明显没有用服务器控件显示快
------解决方案--------------------
那我问下我要在后台代码中从数据库中读取一个字段,在页面上显示,比如放在 <div id= "name "> </div> 里边,我可以 <%= Name%> ,也可以用一个 <lable> ,这样的话当然是直接用 <%= Name%> 效率高了,可是我CS文件的其他方法用用这个Name的的值,那么有回发的话name的值就没有了,lable还有值的,主要是lable默认开启了VIEWSTATE。
所以我一般在这种情况下还是用LABLE的,不知道一般你们怎么用?
------解决方案--------------------
那么,如何选择?
A.
对于简单控件,如 TextBox CheckBox DropDownList .... 等等与 html form 表单元素直接对应的,假如我们系统维护多次提交之间他们的状态,未尝不可使用之,
至于效率,通常是可以忽略的,另外,你还处于 Win32 前时代迈?

B.
对于 GridView/DataGrid/ ... 这样的控件,以以及 TreeView Menu ..., 前者实际上帮我们完成了 asp 中
while '遍历 RecordSet
Response.Write( " <tr> <td> ... ")
' ....