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同樣生成,覆蓋。

整個過程,我們不需要敲入一行代碼。

尾注:此框架中還有非常多的特性等着你去發現,例如客戶端的校驗,遠程校驗(重名檢測)都能非常容易地實現。歡迎留言討論。轉載請注明來自極客獅子。

相關下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM