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. 第二次结对作业-WordCount进阶需求

    原博客 队友博客 github项目地址 目录 具体分工 需求分析 PSP表格 解题思路描述与设计实现说明 爬虫使用 代码组织与内部实现设计(类图) 算法的关键与关键实现部分流程图 附加题设计与展示 设 ...

  2. Centos7 pip 安装MySQLdb(mysql-python)出错

    租了个阿里云的Centos7的ECS,需要使用pip安装MySQLdb模块.也就是mysql-python模块. 但是遇到问题 Collecting mysql-python Downloading ...

  3. POJ1637_Sightseeing tour

    给一个联通图,有的是单向边,有的是双向边,问是否存在欧拉回路. 乍一看毫无思路,可以这样来搞,对于每条无向边,我们随便指定一个方向,看看是否能够做到所有点的度数之和为偶数. 接下来,对于我们指定的边, ...

  4. springmvc+mybatis 处理时间

    项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...

  5. python 查看与更换工作目录

    1. 进入python控制台 2. 查看工作路径,需要导入os包: import os 3. 查看工作路径的命令: os.getcwd() 4. 修改工作路径的命令: os.chdir("d ...

  6. 【刷题】BZOJ 3531 [Sdoi2014]旅行

    Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰 ...

  7. 【BZOJ1150】数据备份(动态规划,凸优化)

    [BZOJ1150]数据备份(动态规划,凸优化) 题面 BZOJ 洛谷 题解 在不考虑\(K\)的情况下很容易\(dp\) 如果把\(K\)考虑进状态显然是\(O(n^2)\)级别. 所以凸优化一下即 ...

  8. ZJOI 2018 一试记

    ZJOI一试几天,天微冷,雨.倒是考试当天近午时分出了太阳. 开题前的一刻,心情反而平静了,窗外泛着淡金色的日光照进来,仿佛今天的我并不是所谓来冲击省队,而只是来经历一场洗礼. 开题了,虽然有一点小插 ...

  9. SQL语句平时不注意的那些小知识点总结

    一.Mybatis 动态sql 之<where>标签和<trim>标签 首先两个标签都可以实现这样的功能:做一个查询接口,有两个参数,当输入参数无论是一个还是两个或者不输入的时 ...

  10. Web Service(下)

    4.WSDL文档 <?xml version='1.0' encoding='UTF-8'?> <wsdl:definitions xmlns:xsd="http://ww ...