MVC3快速搭建Web应用(三)实例篇

出差导致很长时间没有更新,看到很多朋友都要求提供实例下载,在这篇中我们将从新建项目开始,一步一步操作,本篇适合新手,大牛请绕道。文末提供所有相关的下载。

首先说明一下环境与工具

1.VS2010 SP1 (+ MVC 3)

2.Kalman Studio 

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同样生成,覆盖。

整个过程,我们不需要敲入一行代码。

尾注:此框架中还有非常多的特性等着你去发现,例如客户端的校验,远程校验(重名检测)都能非常容易地实现。欢迎留言讨论。转载请注明来自极客狮子。

相关下载

posted @ 2012-07-17 15:49  李久寧  阅读(3299)  评论(16编辑  收藏  举报