大概有5年没有做网站了,最近帮朋友做一个小网站,正好体验一下ASP.NET MVC2。
花了两个周末整整4天时间编写了整个网站的网页框架和后台代码,美工设计和产品内容的填充是别人做的。
接下来说一下这次做网站的几点心得:
1)5年前对于小网站来说只要IE6中排版没问题就行了,现在则不同了,要考虑IE8、Firefox、Chrome等。
第一个问题就是在IE6/IE7里CSS的text-align属性不仅对文字起作用,对盒子也起作用。
因此如果用text-align做右对齐或居中对齐在IE8里排版就会乱掉。解决方法是右对齐设置float属性,
水平居中则没有直接的方法,可以通过设置margin-left:auto和margin-right:auto来实现。
第二个问题是盒子的宽度和高度是否包括padding,是否包括margin,对于CSS2的模型很不习惯。
2)绝对定位,指定position:absolute后并不直接相对于所在的容器定位,需要父对象有定位设置。
3)IE6/IE7不支持displayed:inline-block,支持该属性的呢block之间的间距不一样。
4)使用P元素时,段落与容器的间距IE8与Firefox的显示不一致,后来改用span和相对定位。
5)刚开始有很大一部分时间花在写CSS调整排版,由此感慨啊WPF的Panel和Style是多么的好用,LaTex的盒子排版模型又是多么的先进。
W3C真应该考虑一下简单性、一致性、正交性、完备性之类的问题。
 
以上说的都是CSS,接下来进入正题ASP.NET MVC2。
1)看着VS自动生成的代码,经过简单的学习就上手了。关键是HtmlHelper,UrlHelper,ViewData的使用。
2)MVC最大好处一是最终生成的页面不像以前的ASP.NET页面那么臃肿了,浏览器下载和加载会快一些。
二是URL直接对应服务器方法的调用,而且返回的结果比较灵活。
3)整体来看,使用MVC后需要书写的代码量减少了,对于一些典型问题有封装好的解决方法。
4)使用MVC后对JavaScript的依赖提高了,很多功能适合用JavaScript来实现。结合Ajax用户体验变好了。
5)支持ASP.NET 4.0的网站空间目前比较难找而且价格高,这倒是个问题。

 

下面是几个技巧:
1)表单验证失败后,直接返回View,已填写的内容就会清空,可以这样做:
ViewData.ModelState.AddModelError("FormValidator", message);
foreach (string field in Request.Form.Keys)
{
       ViewData.Add(field, Request.Form[field].Trim());
}
然后Form中用HtmlHelper创建的Input控件会自动从ViewData中获取value。
 
2)输出纯文本:return Content(message, "text/plain", Encoding.UTF8); 或者
return new ContentResult { Content = message, ContentType = "text/plain", ContentEncoding = Encoding.UTF8 };
    显示PDF文件:
return File("~/Content/developersguide.pdf", "application/pdf", "developersguide.pdf");
 
3)HTML的select元素默认第一个选项是选中的,需要javascript执行oSelect.selectedIndex = -1;变成不选中状态。

 

 

posted @ 2010-06-27 16:03 Junfeng Liu 阅读(2934) | 评论(8) | 编辑

写了如下代码:

    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
    
public class TypeConditionAttribute<TValue> : Attribute
    {
        
/// <summary>
        
/// The field name of type field
        
/// </summary>
        public string TypeField { getset; }

        
public TValue Value { getset; }

        
public TypeConditionAttribute(string typeField, TValue value)
        {
            TypeField 
= typeField;
            Value 
= value;
        }

        
public bool Evaluate(object record)
        {
            FieldInfo fieldInfo 
= record.GetType().GetField(TypeField);
            
object value = fieldInfo.GetValue(record);
            
return this.Value.Equals((TValue)value);
        }
    }

 

结果不能编译,原因是“Attribute”是一个特性类,无法从它派生泛型类型。有点出乎意外。

 

posted @ 2010-06-05 16:25 Junfeng Liu 阅读(488) | 评论(6) | 编辑

1.条件断点

在断点上弹出右键菜单,点“条件 ...”,可以设置断点条件。

2. 异常中断

点击“调试->异常”菜单,可以设置异常抛出时中断

3. 添加类成员

在类图类详细信息窗口里可以添加类成员,自动生成代码。

posted @ 2010-05-30 21:46 Junfeng Liu 阅读(131) | 评论(0) | 编辑
     摘要: 看了《子集算法的完整数学推导过程》这篇文章后,感觉里面的数学公式很多,较难转换成计算机程序。于是自己想了一个思路:把关系表达式看做是区间,比如3<x<=5是(3,5],逻辑与或运算就是区间的交集和并集运算。然后写程序实现了区间的子集,交集和并集运算。区间(Segment)有两个端点(Endpoit),难点是多个区间的集会(Set)之间的运算。[代码]比较复杂的是SetUnion(Set...  阅读全文
posted @ 2010-05-21 18:52 Junfeng Liu 阅读(928) | 评论(0) | 编辑

一直用世界之窗3.0,目前有一个比较郁闷的地方是启动下载管理器的时候整个浏览器会假死一段时间。

搜狗浏览器2.0正式版发布后,感觉快赶上世界之窗了,有以下几点比较引人:

1. 支持我喜欢的Chrome皮肤。

2. 支持IE和Webkit双内核。

3. 防假死和一些加速功能。

因此今天试用了一下,感觉挺好,只是还有以下几点需要改进:

1. 允许自定义收藏夹的路径,从而可以使用和IE不同的收藏夹。

2. Chrome皮肤里,目前切换侧边栏的按钮应该做成是弹出主菜单,从而取消菜单栏。

3. 收藏栏的收藏夹按钮左边可以加一个切换侧边栏的按钮。

posted @ 2010-04-09 17:14 Junfeng Liu 阅读(1568) | 评论(7) | 编辑
     摘要: 先用Expression做了矢量图,然后导入到Blend里做成了走路的动画。源代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><UserControlxmlns="http://schemas.microsoft.com/winfx/2006...  阅读全文
posted @ 2010-03-31 15:32 Junfeng Liu 阅读(430) | 评论(2) | 编辑
     摘要: 通过启动相应的WinPE,可以直接使用光盘镜像来安装Windows7和Windows Server 2008.制作方法:1、把windows7光盘(或光盘镜像)里的\sources\boot.wim文件复制到d:\2、在imgaex目录里右键点击inf文件,选安装。(Imagex 6.0 AIK 封装工具)3、运行cmd,进入imgaex目录。4、imagex /mountrw d:\boot.w...  阅读全文
posted @ 2010-03-10 12:16 Junfeng Liu 阅读(879) | 评论(0) | 编辑
     摘要: 引言WPF使用了DirectX作为图形渲染引擎,因此游戏性能的表现要强于GDI+,而且WPF内建的对动画的支持使得游戏的编写更加简化。WPF也提供3D图形的功能,不过3D的建模和动画比较复杂,这里先做一个2D的游戏引擎练练手。实例一直想做一个超级马里奥的游戏,就从这个游戏做起,画了一部分图,已经完成的有走动、跳跃、发射子弹、边界检查和场景滚动,没有关卡,没有敌人。下面是游戏截图:实现行走中迈腿摆臂...  阅读全文
posted @ 2010-03-04 18:23 Junfeng Liu 阅读(1799) | 评论(12) | 编辑
     摘要: 这是我以前做的一个项目,给大家介绍下。CodeProject文章:http://www.codeproject.com/KB/office/ExcelReader.aspxGoog Code网站:http://code.google.com/p/excellibrary/功能说明:可以读写单元格内容,不支持公式,不支持设置字体、色彩、大小等单元格样式,不支持OOXML。  阅读全文
posted @ 2010-02-25 19:11 Junfeng Liu 阅读(885) | 评论(2) | 编辑
     摘要: 、点此下载更新历史: version 1.0[2002.5.22]+ 抓取全屏+ 抓取选定区域 version 1.1[2002.10.2]+ 增加了延时设置 version 1.2[2003.9.14]+ 抓取选定区域时,单击鼠标右键改变选取线的色彩以及重新选择截取区域. version 2.0[2004.7.16]+ 改进了抓图引擎,更加快速准确. + .Net 2.0编译version 2....  阅读全文
posted @ 2010-02-11 16:54 Junfeng Liu 阅读(2073) | 评论(11) | 编辑