.net笔记之WebForm

2014.08.13
webform,asp.net服务器控件。相对于winform。
asp.net=webform+mvc+其他框架
尽量少用webform的控件。不用webform复杂的控件。不建议深入学习重度使用。


aspx页面,web服务器遇到<%%>runat="server"的标签进行特殊处理,其他的就是原样输出给浏览器。

<%%>里面可以嵌入c#代码,类似asp中的写法。不建议这样写,不好维护。<%=sayHello()%>=相当于Response.Write(),这里的表达式至少要用protected,

aspx.cs都继承自page这个类,page类ashx实现了IhttpHander这个借口,aspx是个特殊的ashx,高级的httphandler,封装了很多操作。

反编译工具ILSpy可以查看程序集,
aspx和cs的关系:codeBehind太low了。
this.getType 当前对象实例的类型。 this.GetType().Assembly.Location当前对象类型的程序集的位置。this.GetType().BaseType
父类是webfrom1,接下来是webform1_aspx, 这个类是aspx页面根据aspx内容动态生成的构建网页内容的类,这个类只能继承调用后台cs那个类的protected以上的方法。


企业项目中最多会轻量的使用控件有button,textbox,checkbox,radiobutton,fileupload,dropdownlist,listbox,repeater,listview.而不要使用dataSource,母版页,validator(前端用jquery做),asp.net ajax,view,wizard,还有login分组下等等乱七八糟的不要用。



onclientclick="return confirm('要提交么')"
linkbutton不要作为超链接使用变态作死。它要生成隐藏和js还要提交给服务器,还不便于seo。不如使用<a>
Postback 提交后回来。
省市联动 onselectedChanged()
并不会返回,因为没有提交。还要在客户端做个js来提交表单。可以吧dropdownlist控件的autoPostback设置为true,才回自动提交变淡。js监听了chaged事件提交。



2014.08.14
WebForm之ViewState:
aspx是高级的HttpHander,也是无状态的。但是可以把数据存放到viewstate中,变成“有状态的”。
this.viewstate["age"]=age;
实际上是在页面生成了<input type="hidden" value='base64编码'>可以保存上次的值



所有在cs代码中修改的值而且给web控件赋值的都会放到_viewstate中
如果有repeater1.datasource=dt;
就会吧所有绑定的值存到viewstate中。造成页面太大,而且这些值不需要下次使用,可设置EnableViewState="false",或者针对某个控件禁用。

可以先禁用,实在不行再启用。没有非要viewstate才能干成的事。
如果需要存值下次使用,启用viewstate更方便。


UpdatePanel内置的简化AJAX开发的控件。只需要把无刷新的部分放在UpdatePanel控件中。
实际上是向服务器发ajax请求将panel那一块作为ajax数据提交并返回。重新的刷了一遍。很浪费资源。只使用于对性能要求不高的地方。js监听那里的控件也不会起作用了。控件id改变了!
不能盼着天上掉下来神奇的控件。
比如Delphi提供了很多控件开发很快。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值