WebForm之烦恼

1.winform式的开发方式

WebForm的开发方式中,只需要从工具箱中拖拽一个控件,再从.aspx.cs中写控件的事件逻辑,就好了。

微软为我们做了很多工作,很多东西不需要我们了解。微软貌似想把网站开发变得跟Winform开发一致。

但是开发人员不了解运行机制,真的好吗?

2.ViewState

Webform为了保存一些页面的状态信息,用了一个<input type =“hidden”>。 别人告诉我这个叫ViewState。

ViewState让html变得异常“丑陋”。

WebForm的弊端

1.入门容易,开发很难

方便、快捷的服务器端控件,在让我们享受简便的同时,也给我们带来的无穷的烦恼。如果只是拖控件,初学者上手很容易。但这之后因为很多东西封装太强,很多底层东西让我们初学者不是很明白,想再提升很难了。

2.控制不灵活

对于页面的数据的呈现方式,一遍人很难控制。

3.ViewState处理

这种机制,的确让开发变得简单了。但是同样它也让html变得异常臃肿、丑陋。

4.异步请求

异步请求每个请求后台都不许有一个一般处理程序对应。

5.容易变傻

WebForm的开发方式,跟传统的Web开发方式不一致。传统web开发必须了解的东西,这里很多都不需要了解,例如http协议,ajax,javascript等等。。。总之,控件很丰富,不需要你了解太多。

推荐轻量的使用WebForm

这条其实挺纠结地,既然吐槽了WebForm这么多,干么还要用呢?直接不用不就得了。

我的理解是这样的:首先,对于.NET开发,很多人第一反应还是WebForm(尽管他们可能不用这个,这种思维挺怪的。)就像街头卖艺这个行当,行内人都知道“胸口碎大石”是假把式。但是作为卖艺人,如果跟人说,我不会“胸口碎大石”,多少还有点羞于启齿。其次呢,很多时候开发时候什么技术,不是由我们决定的。万一前面有webForm开发的程序,不会改也不太好。 所以我的建议是,还是要略懂一点。注意略懂即可。

1. aspx页面

这里说是要,推荐一种轻量的使用WebForm的方式。 这个案例中 仅仅做一个列表功能吧。

/* 在aspx文件中,其实是支持html和代码混编的这种方式的。
尽管你肯能觉得他很乱,但webform下不失为一种说得过去的解决方案。
*/
<table>
<thead>
<tr><th>姓名</th><th>年龄</th><th>性别</th><th>编辑</th></tr>
</thead>
<tbody>
<%for(int i=0;i<persons.Rows.Count;i++){
System.Data.DataRow row = persons.Rows[i];
%>
<tr><td><%=row["Name"] %></td><td><%=row["Age"] %></td><td><%bool gender = (bool)row["Gender"];Response.Write(gender?"男":"女"); %></td><td><a href="PersonAddNewEdit.aspx?action=edit&id=<%=row["Id"] %>">编辑</a></td></tr>
<%} %>
</tbody>
</table>

2.aspx.cs文件

//Model:不知道自己如何被显示,也不知道是如何被查询出来
protected DataTable persons;
protected void Page_Load(object sender, EventArgs e)
{
//查询数据,把数据放到Model,也不知道数据是如何展现的
persons = SqlHelper.ExecuteQuery("select * from T_Persons");
}

地位尴尬的WebForm、ASP.NET核心知识(10)的更多相关文章

  1. Cookie详解、ASP.NET核心知识(7)

    无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...

  2. 网络基础知识、ASP.NET 核心知识(1)*

    为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...

  3. 让页面无刷新的AJAX、ASP.NET核心知识(9)

    AJAX简介 1.如果没有AJAX 普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,如果没有ajax,在youku看视频的过程中,就没法提交评论,页面会刷新,视频会被打断. 2.说说AJ ...

  4. Session详解、ASP.NET核心知识(8)

    介绍一下Session 1.作用 Cookie是存在客户端,Session是存在服务器端,目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session). 在本篇博文的姊妹篇 ...

  5. 关于Http协议、ASP.NET 核心知识(2)

    简介HTTP (对于http协议的描述我前部分有写,但基于保证文档独立完整性的原则,我再写一遍.反正又不花钱.) 这货的学名叫:超文本传输协议 英文名字:(HTTP,HyperText Transfe ...

  6. ASP.NET内核几大对象、ASP.NET核心知识(7)--转载

    本文的学习流程是这样安排的. 一个简单的GDI小案例 1.说明 如果你想思考如何生成验证码,那么您第一个要解决的问题,一定是.NET动态生成图片问题. //GDI:.Net程序中进行绘图的一些类. 2 ...

  7. ASP.NET内核几大对象、ASP.NET核心知识(6)--转载

    这篇博文主要介绍一下几个对象. 1)HttpContext 2)HttpRequest 3)HttpResponse 4)context. Server 5)context.Session HttpC ...

  8. 一般处理程序、ASP.NET核心知识(5)--转载

    初窥 1.新建一个一般处理程序 新建一个一般处理程序 2.看看里头的代码 public class MyHandler : IHttpHandler { public void ProcessRequ ...

  9. 写一个简易web服务器、ASP.NET核心知识(4)--转载

    第一次尝试(V1.0) 1.理论支持 这里主要要说的关于Socket方面的.主要是一个例子,关于Socket如何建立服务端程序的简单的代码. static void Main(string[] arg ...

随机推荐

  1. java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ClassLoadingException

    下载高版本的: hibernate-commons-annotations-5.0.1.Final.jar 低版本缺包

  2. background的使用

    先简单的介绍颜色表示法 一共有三种:单词,rgb表示法,十六进制表示法 rgb:红色 绿色 蓝色 三原色 光学显示器,每个像素都是有三原色的发光原件组成的,靠明亮度不同调成不同的颜色的 有逗号隔开,r ...

  3. JavaWeb基础【1】—— Tomcat

    此笔记是学习黑马程序员JavaWeb系列视频的课堂笔记. 感谢黑马程序员. 一.Tomcat概述 Tomcat服务器由Apache提供,开源免费.由于Sun和其他公司参与到了Tomcat的开发中,所以 ...

  4. BZOJ3203 SDOI2013保护出题人(三分)

    给a做一个前缀和,那么现在每次所查询的就是(sn-sk)/(bn+nd-(k+1)d)的最大值.这个式子可以看成是(bn+nd,sn)和((k+1)d,sk)所成直线的斜率. 脑补一条直线不断减小斜率 ...

  5. NOIP2011

    DAY1 铺地毯 (carpet.cpp/c/pas) 模拟 倒序离线处理 program carpet; var l,w:..,..] of longint; n,i,a,b,g,k,x,y:lon ...

  6. WampServer3.0允许局域网访问配置教程

    wamp server 下的Apache默认设置是不允许外网访问和局域网访问的,而直接搜索 wamp局域网访问配置,出现都是一些旧版本的wamp的配置信息,最新版本3.0.X需要使用以下配置方法: 配 ...

  7. MT【133】磨刀不误砍柴工

    (2018,4月学考数学填空最后一题) \(f(x)=2x^2-(x-a)|x-a|-2 \ge 0\)对任意\(x\in R\)恒成立,求\(a\)的范围______ 提示:\(f(0)=a|a|- ...

  8. 【转】arm-none-linux-gnueabi-gcc下载

    arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括 ...

  9. nodejs调用脚本(python/shell)和系统命令

    每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/ch ...

  10. easyui datebox 扩展 只显示年月

    http://blog.csdn.net/zhaobao110/article/details/47755445 一个日期控件只显示年月是很正常的事情.可是easyui datebox 不支持这种格式 ...