元旦去了上海一家公司面试,那CTO说他们的项目都不用微软的控件,说是微软的控件会造成一堆废弃代码,也可能有些地方并不是我们想象的那么完美,所以尽量避免用web控件,我认真思考了,想想他说得有一定的道理。毕竟微软的理念是尽量让程序员做更少的事情,封装微软确实做得不错,控件也绝大部分可以满足需求,但是这些控件做的都是通用性,很多时候用它会造成页面加载速度慢,最后我比较了下,发现所有的控件都可以用html控件来代替,然后绑定属性,唯独repeater好像是无法来找到代替物,思考再三,我决定想出来一个可以代替repeater控件的东西,昨天晚上睡不着就想了下想到了一种类似MVC反射机制的方法来替代repeater,今天试了一把,效果不错,下面给出我的源码。
我使用的是linq to sql做的,如下:
第一步,数据库
第二步,linq类
第三步,页面后台代码
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
hrDataContext hr = new hrDataContext();
private List<subjectTable> lstSub;
public List<subjectTable> LstSub
{
get { return lstSub; }
set { lstSub = value; }
}
private subjectTable sub;
public subjectTable Sub
{
get { return sub; }
set { sub = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
var a = from c in hr.subjectTable
select c;
lstSub = new List<subjectTable>();
foreach (var ai in a)
{
lstSub.Add(ai);
}
}
}
}
第四步,也就是最主要的页面部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1">
<div>
<table>
<tr>
<td>id</td>
<td>name</td>
<td>remark</td>
</tr>
<% foreach (var r in LstSub)
{ %>
<tr>
<td><%=r.subjectID %></td>
<td><%=r.subjectName%></td>
<td><%=r.remark%></td>
</tr>
<%} %>
</table>
</div>
</form>
</body>
</html>
总结:通过用html控件替代web控件,可以让页面变得更容易读懂,让页面干净,这种方式类似MVC。使用html控件,特别是在电子商务网站上的必要性很重要,因为电子商务网站上的数据往往很多,页面请求也相当的频繁,必然对页面的大小要求很高,使用html控件正可以减少页面在传输过程中消耗的时间,提高用户体验。