Posted on 2009-06-07 13:59
李天平 阅读(17393)
评论(26) 编辑 收藏
ASP.NET MVC是微软官方提供的开源MVC框架. 在经过了漫长的preview和2个RC版本后, 终于发布了1.0正式版本。自从微软发布ASP.NET MVC框架1.0正式版,对于MVC的讨论就不绝于耳。
今日闲来无事做一个基于三层架构的MVC模式应用的完整示例项目,开放源码。
该项目涉及如下几项要点应用:
1) 整个解决方案基于标准的三层结构。
2) 表示层采用MVC模式。
3) 数据的增、删、改、查操作示例。
4) 基于MVC的列表数据显示及分页处理。
5) Linq的应用等。
搭建MVC开发环境:
.NET Framework 3.5 SP1 下载地址:
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=ab99342f-5d1a-413d-8319
-81da479ab0d7
VS.NET 2008 SP1 下载地址:
http://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-
84E525B5CE61&displaylang=zh-cn
ASP.NET MVC框架1.0正式版下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-
35e00103cb4b&displaylang=en
微软MVC官方网站:http://www.asp.net/mvc/
通过对MVC的学习,我们可以看到MVC有如下特点:
1) 业务处理与显示分离:ASPX页面与CS代码彻底分离。更好的复用和维护。
2) 服务器端的表单控件不再被提倡使用,取而代之使用传统的input,或直接让Html.TextBox生成控件标签。
3) 没有了事件驱动模型。在ASP.NET MVC中,当某个按钮被点击,你不要再习惯性想到应该在相应的aspx.cs中有
个Click处理方法,你应该想到的是该有某个Controller中有个Action来处理这个事件。
4) 没有了数据绑定。如果你习惯了GridView的数据绑定,在ASP.NET MVC中则需要改变思路,你自己动手解决。
5) 增加了地址重写。MVC的Routing组件让我们可以很好的进行URL路由处理。
6) 总体来看,可以理解MVC是基于Web Form的一种编程方式模型扩展,是一种表示层的编程模型方案。
基于三层架构的MVC模式应用的完整示例项目源码下载:
觉得传统的三层架构和MVC模式耦合在一起有点过度设计,
MVC推荐用model层处理业务和数据,
并调用Repository模式实现的数据层,
要么webform + 三层架构,
要么mvc + service + repository
@guozili@163.com
你说的不无道理。这里只是想通过二者的结合,希望在不过大改动先前三层项目架构的情况下,如何充分利用二者的一些特点加入一些新的东西。顺着自取,不作为项目范例。
在经过了漫长的preview和2个RC版本后...
嘿嘿 忘记说beta了
虽然作为正式版的MVC,但仍感觉还有很多不尽如人意的地方,期待未来的ASP.NET MVC能有强大的提升,让我们使的更舒服更方便。
李老师也关注MVC的了,园子里面的各大告诉都在关注呵呵。
看来MVC用的人也是越来越多的了
能具体讲讲 asp.net mvc不尽如人意的地方 吗 谢谢
WEB的开发,就应该是MVC 这样的,为啥要弄出来 WebForm,搞的HTML代码经常不干净,虽然你也可以自己控制,但是总是不如 MVC 的干净,可控性更强。
很久以前學習Jsp時,里面講到Model2,覺得MS的MVC的原理和那個Model2超級相似。
webForm則和windowsForm一樣。編程比較直觀。
很好,学习了!不知道目前有多少公司使用MVC开发项目呢??
生成的代码有点问题哟,不知道你是不是故意写成这样的.
生个标点符号这些就不说了,就说下面这个,
操作选项是.代码生成.c#代码,单类结构,基于sql方式.
/// <summary>
/// 类pubuser。
/// </summary>
public class pubuser
{
public pubuser()
{ }
#region Model
private string _userid;
private string _pwd;
/// <summary>
///
/// </summary>
public string userid
{
set { _userid = value; }
get { return _userid; }
}
/// <summary>
///
/// </summary>
public string pwd
{
set { _pwd = value; }
get { return _pwd; }
}
#endregion Model
/// <summary>
/// 得到一个对象实体
/// </summary>
public pubuser(string userid)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select ");
strSql.Append("userid,pwd ");
strSql.Append(" from pubuser ");
strSql.Append(" where userid='" + userid + "' ");
DataTable dt = _DB.DataTableGet(strSql.ToString());
if (dt.Rows.Count > 0)
{
userid = dt.Rows[0]["userid"].ToString();
/*注意这里,这里是对形参userid赋值了,而不是对成员userid赋值!,这里是错误的,*/
pwd = dt.Rows[0]["pwd"].ToString();
}
}
其它的方法 ,如getmodel等方法也是错误的.
为何不这样呢?
/// <summary>
/// 得到一个对象实体
/// </summary>
public pubuser(string puserid)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select ");
strSql.Append("userid,pwd ");
strSql.Append(" from pubuser ");
strSql.Append(" where userid='" + puserid + "' ");
DataTable dt = _DB.DataTableGet(strSql.ToString());
if (dt.Rows.Count > 0)
{
userid = dt.Rows[0]["userid"].ToString();
pwd = dt.Rows[0]["pwd"].ToString();
}
}
对方法的每个形参,前面都加上个字符,以示区别,如加个"p"字符.??
谢谢,愿你们做得更好.
Microsoft.Practices.EnterpriseLibrary.Data.dll 在哪里有下载
ASP.Net的MVC是web层框架,如果实现这样的框架就非常完美了
ASP.Net MVC1.0 + Spring.Net + NHibernate
业务层用:Spring.Net
持久层用:NHibernate
大家觉得如何?
现在大家学习感受mvc究竟是它的思想还是别的?如果说是前者,那么数十年前就已经存在了,为什么.net推出来MVC框架,很多人会觉得它是新东东呢?
类似Java SSH框架型 MVC都一个概念 是吧