第一次用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;变成不选中状态。

 

 

posted @ 2010-06-27 16:03  刘俊峰  阅读(4971)  评论(9编辑  收藏  举报