ASP.NET--Web服务器端控件和Html控件

今天学习总结了一些相关概念和知识。

之前无论是做 单机的winform 还是 CS的winform 感觉,不到两年下来感觉还可以,虽然API有很多,但是还是比较熟悉基于WINDOWS消息机制的编程,但是现在网络硬件设施更新之快,BS 开发优势之大,不过需要的技术方面倒是得扩宽许多,JavaScript,CSS,Html都需要了解掌握,除webForm之外,对于现今主流的MVC更是需要学习。

概念:

asp.net控件服务端控件  --> 响应服务端事件
HTML控件客户端控件   -- >  响应客户端事件
HTML客户端事件是不会提交给服务端的,比说点击按钮,改变文字颜色等,只是针用户机器本身,是不会发送数据包给远程服务器的
而 asp.net按钮点击之后,将会以post或者get形式发送给服务器,进行数据库操作等等,页面提交之后将会刷新。
但是ajax技术使客户端控件发送请求给webservice

现象获取用户输入到文本框中的内容:

服务器端控件:string s=Textbox1.text;

html控件:string s=request.querystring["text1"]; //text1为参数

另:

<input type="text" name="name" ><input type="button" value="确定">
定义一个变量通过request.getParameter("name")取得,其中name 是标签名称
另外在javascript中可以
先在标签里加上一个id 如<input type="text" name="name" id="name">
再通过document.getElementById("name").value 取得标签中的值
===========================================================

获取文本框中的内容有以下两种方法:

假设为如下文本框:

<input type="text" value="" id="text">

1、原生JS获取文本框的值:

document.getElementById("text").value  //text为文本框的id

2、jquery获取文本框的值:

$("#text").val()
============================================================

Web服务器端控件和Html控件 关系

HTML 页面的扩展名是 .htm 或 .html。假如浏览器从服务器请求某张 HTML 页面,服务器不进行任何修改,就会把该页面发往浏览器。
ASP.NET 页面的扩展名是 .aspx。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前,服务器首先会处理页面中的可执行代码。
最终浏览器还是会由html输出,服务器控件的页面访问速度比html的要慢的多。asp.net以页面一遍遍刷新html的形式,这就决定了他的机制很慢。而且越是追求对程序员友好、功能强大,那么其性能问题越是严重。

一句话:服务器控件是封装好了html控件。 服务器控件通过ViewState维持状态,而HTML没有,如果没有交互的,可以直接用HTML控件。

服务器端控件都会有个runat="Server"属性,
这样才能够在后台对其进行设置修改,
也就是在cs代码里面能对其修改设置。
可测试 放个HTML控件 在CS代码是引用不出控件名的
然后HTML控件加上runat="Server" 在CS代码就能引用该控件了
本质上ASP.NET 的服务器控件 解析后返回到前台还是HTML控件
建个页面 放一个asp:textbox上去
然后运行页面,然后查看页面源文件
会发现放上的服务器控件变成了HTML的inupt type="button"

<asp:Button width="7%"  ID="btnupdate" runat="server" Text="Update" CssClass="trcss_tot1" OnClick="btnupdate_Click" />

顺便说一下VIEWSTATE:

由于HTTP连接属于无状态的,每次页面请求都无法记录上次请求页面的信息。
那么要保存上次请求页面上控件的值,也就是页面刷新后,填写的值不变,比方在textbox填了个‘a’,页面刷新后还是'a',.NET框架为实现这种机制,于是就用到了viewstate视图状态来保存这些控件的值,
那么将所有控件的值存在什么地方呢?可以运行程序,然后在页面中查看源文件,就可以看到一个input type="hidden" name="__VIEWSTATE"的标签,这个就是所谓的”视图“,它是经过服务器序列化过的,然后服务器接收后会反序列化这些隐藏域的值然后又从 新给这些控件赋值,从而页面刷新后还能记录上次请求时候的所有控件的值。服务器控件都会默认保存VIEWSTATE的 有个属性(EnableViewState)可以设置的, 设置为Flase就不保存了,页面刷新后,值也就没了,可以做个测试放个textbox设置EnableViewState为false,然后输入个 值,然后再用按钮去刷新页面,那么textbox会为空,因为没有视图状态记录到上次输入的值。

 

 

服务器端控件&html控件的使用问题
先说下:服务器端控件仅仅是微软为了方便一些入门开发者封装了一些html控件,所以说服务器端控件的根源来源于html控件,只不过在这控件基础上加入了一些封装的css\js以及开放一些供别人设置的接口而已。
所以说html控件趋势被取消掉那是绝对不可能的。取消了。就没有了Web存在的意义。要说取消趋势也是服务器端控件。
服务器端控件的发展趋势,从这几年来看,排斥的人越来越多,为什么?
1.设置样式非常不方便,(不是说不能设置样式),而是不直接。
2.多数普通人员是不懂得怎么针对服务器端控件进行优化----如是否取消ViewState,是否需要这个控件进行postback,总之经常会看到这些人员做的网页源代码比普通html控件开发人员要多至少一辈的垃圾代码。不仅性能不好提升,也验证影响SEO优化。
3.编写对应的一些javascript不方便。每次都要获取真正的服务器端ID,如果要将javascript写在js文件中,那是一种恶浩,你得变通采用非ID的方式或其他方式进行声明。繁琐
4.从微软目前的技术趋势来看,逐渐抛弃服务器端控件开发也是一种主流。当然选什么还是要看你的项目来决定,有的开发公司天生就为了速度,拖拉服务器控件进行快速开发也是没啥好说坏与好。

推荐本相关参考与优秀博客:http://blog.csdn.net/lxfzgg/article/details/8467232

 

posted @ 2016-03-18 16:31  依旧一生有你  阅读(7859)  评论(1编辑  收藏  举报