第一次用ASP.NET MVC2 做网站

大概有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;变成不选中状态。