MVC3快速搭建Web应用(三)实例篇
出差导致很长时间没有更新,看到很多朋友都要求提供实例下载,在这篇中我们将从新建项目开始,一步一步操作,本篇适合新手,大牛请绕道。文末提供所有相关的下载。
首先说明一下环境与工具
1.VS2010 SP1 (+ MVC 3)
3.PowerDesigner 16
特别说明一下Kalman Studio, 这是一个很方便的t4工具,博客园上的一哥们写的,挺长时间没有更新了,个人觉得跟博客园有些S13的回复有关系,挺为作者感到不平的,也替有些所谓的牛人蒙羞。
1.准备数据库
若对使用Powerdesigner建立数据库不感兴趣可以直接下载文章末尾的文件,附加到sqlserver上即可。
打开PowerDesigner,新建物理逻辑图( physical data diagram),新建表,名称为User,没有问题的话应该是这个样子的,记得将I与Commet列显示出来,I代表自动增长,Commet是注释(很重要,下面会用到)
按我的上一篇文章操作方法修改一下Powerdesigner的生成配置(重要),单击数据库->生成数据库(Ctrl+G),选择生成脚本。
不出问题的话,生成后的sql里面应该会包含类似于下面的语句,如果有的话说明可以成功生成中文注释:
if exists (select 1 from sysproperties where TableID = object_id('"User"') and ColName = 'UserName' AND PropName='MS_Description') begin declare @CurrentUser sysname select @CurrentUser = user_name() execute sp_dropextendedproperty 'MS_Description', 'user', @CurrentUser, 'table', 'User', 'column', 'UserName' end select @CurrentUser = user_name() execute sp_addextendedproperty 'MS_Description', '名称', 'user', @CurrentUser, 'table', 'User', 'column', 'UserName' go
请注意,如果生成后的sql在Sql管理器中运行还是出错的话,那你一定是忘了添加视图 'sysproperties',按上一篇文章一步步照做吧,绝对不会有问题。
2.项目准备
新建MVC3工程,名字为RapidWebDevSample。
右键->新建项 如下图添加数据模型
在弹出框选择从数据库生成,点击下一步。如下图,建立数据库连接
完成后,编译一下(重要)。至此项目准备完成。
3.添加easyui支持
下载easyui,将对应的js拷入Scripts,themes拷入Content(覆盖),并在Views/Shared/_Layout.cshtml添加这几行:
<link href="@Url.Content("~/Content/themes/default/easyui.css")" rel="stylesheet" type="text/css"/> <link href="@Url.Content("~/Content/themes/icon.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery.easyui.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.form.js")" type="text/javascript"></script>
这样,就可以在项目中使用easyui了。
4.添加控制器与视图
注:将MVC快速搭建(一)中的模版放入指定地方后你才可以进行下面的步骤(注:有少许更新,请下载此文末尾模版,使用方法参考第一篇文章)。
在Controllers上右键添加控制器,按下图进行选择配置,如果Model class与Data context下拉不出来东西,是因为你没有编译项目,重新编译一下就好了。
打开Global.asax.cs修改一下路由,让它默认从此控制器启动:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute("Default", // Route name "{controller}/{action}/{id}", // URL with parameters new {controller = "User", action = "Index", id = UrlParameter.Optional} // Parameter defaults ); }
现在运行一下程序看看效果:
现在你的程序不但已经包含增删改,甚至连日期都自动识别为选取框了。是不是非常迅速?同样你可以修改t4模版,让它支持搜索,支持多表联合...
5.最后一步
到目前为止,我们的Kalman Studio一直没有使用到,我们将用他来生成中文标签。
下载文尾的Kalman t4 模版,放入程序目录下的T4Template/Entity中
配置程序根目录下的config,添加连接串
<connectionStrings> <clear/> <add name="Server" connectionString="data source=192.168.0.4;initial catalog=RapidWebDevSample;persist security info=True;user id=sa;password=123;" /> </connectionStrings>
打开主程序,在左边的下拉列表中选择该连接,双击展开,在表上右键,选择代码生成器
依次 双击Entity,Create,点击代码生成,生成后如下:
<table class="editForm"> <tr> <td> @Html.LabelFor(model => model.UserName,"名称:") </td> <td> @Html.TextBoxFor(model => model.UserName,new{@id="c_UserName"}) </td> </tr> <tr> <td> @Html.LabelFor(model => model.Password,"密码:") </td> <td> @Html.TextBoxFor(model => model.Password,new{@id="c_Password"}) </td> </tr> <tr> <td> @Html.LabelFor(model => model.Age,"年龄:") </td> <td> @Html.TextBoxFor(model => model.Age,new{@id="c_Age"}) </td> </tr> <tr> <td> @Html.LabelFor(model => model.Enable,"是否启用:") </td> <td> @Html.TextBoxFor(model => model.Enable,new{@id="c_Enable"}) </td> </tr> <tr> <td> @Html.LabelFor(model => model.Birth,"生日:") </td> <td> <input id="c_Birth" name="Birth" required="true"/> </td> </tr> </table>
覆盖Views/Create中的对应表格,完成。其他Edit,Index同样生成,覆盖。
整个过程,我们不需要敲入一行代码。
尾注:此框架中还有非常多的特性等着你去发现,例如客户端的校验,远程校验(重名检测)都能非常容易地实现。欢迎留言讨论。转载请注明来自极客狮子。