国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:準(zhǔn)備工作...

      本文將簡要介紹這個(gè)文章系列的目的、形式及大體內(nèi)容。并且完成開始學(xué)習(xí)這個(gè)系列前所必要的準(zhǔn)備工作。

前言
      ASP.NET MVC作為微軟官方的MVC解決方案,推出有一段時(shí)間了??梢哉f自動(dòng)推出以來,一直廣受關(guān)注。在經(jīng)歷了漫長的Preview之后,前幾天終于推出了其beta版。并且在官方文檔中,微軟聲明最終的正式版與beta版相比不會(huì)有大的變化。所以,對(duì)于.NET平臺(tái)的開發(fā)人員來說,是時(shí)候?qū)W習(xí)ASP.NET MVC了。
      本系列文章作為一個(gè)ASP.NET MVC的入門教程,將不會(huì)長篇大論介紹其中的概念及理論。而是通過案例實(shí)踐來學(xué)習(xí)ASP.NET MVC。在這系列文章中我將逐步完成一個(gè)“公告發(fā)布系統(tǒng)”。我的寫作策略是:先動(dòng)手做,遇到需要解釋概念和理論的時(shí)候再解釋,而不是先把概念和理論解釋完再做東西。
      另外,我還有幾點(diǎn)要說明的:
      1.為了將大家的關(guān)注點(diǎn)充分集中在ASP.NET MVC上,這個(gè)Demo的業(yè)務(wù)處理將使用Mock的方式。即不會(huì)真正去訪問數(shù)據(jù)庫,而是虛擬一些數(shù)據(jù)。
      2.本Demo將不考慮任何美工問題。
      下面,讓我們一起開始ASP.NET MVC之旅吧。在這一篇中,我們將做完所有的準(zhǔn)備工作。

配置環(huán)境
      如果您還沒有安裝ASP.NET MVC的話,請(qǐng)到這里下載安裝。
      下載后,按提示安裝就可以了。

新建項(xiàng)目
      安裝完ASP.NET MVC后,在VS里新建一個(gè)項(xiàng)目,可以看到有一個(gè)“ASP.NET MVC Web Application”的選項(xiàng),選擇它,新建一個(gè)項(xiàng)目,并命名為“MVCDemo”。
      建完項(xiàng)目后,可以看到默認(rèn)情況下已經(jīng)建立了很多文件夾,這里簡略說一下各個(gè)文件夾的作用。
      Content——存放應(yīng)用需要的一些資源文件,如圖片、CSS等。
      Controllers——存放控制器類。
      Models——存放業(yè)務(wù)模型組件。
      Scripts——存放JavaScript腳本文件。
      Views——存放視圖。
      現(xiàn)在不了解一些概念沒關(guān)系,后續(xù)文章將慢慢解釋。

準(zhǔn)備工作
      新建完項(xiàng)目后,我們要做的準(zhǔn)備工作就是建立Mock業(yè)務(wù)模型,這樣以后我們就直接使用這些“欺騙”式的業(yè)務(wù)模型進(jìn)行業(yè)務(wù)處理,而將全部關(guān)注點(diǎn)放在ASP.NET MVC的學(xué)習(xí)上。
      首先在Models下新建三個(gè)文件夾,分別叫做Entities、Interfaces、MockModels,分別用來存放實(shí)體類、接口及Mock業(yè)務(wù)模型。
      Entities下有兩個(gè)類:CategoryInfo和AnnounceInfo,分別是公告類別和公告的實(shí)體類。具體代碼如下:
CategoryInfo.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVCDemo.Models.Entities
{
    
/// <summary>
    
/// 分類實(shí)體類
    
/// </summary>
    public class CategoryInfo
    {
        
public int ID { getset; }
        
public string Name { getset; }
    }
}


AnnounceInfo.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MVCDemo.Models.Entities
{
    
/// <summary>
    
/// 公告實(shí)體類
    
/// </summary>
    public class AnnounceInfo
    {
        
public int ID { getset; }
        
public string Title { getset; }
        
public string Content { getset; }
        
public int Category { getset; }
    }
}


      接下來,我們將定義兩個(gè)接口,分別是公告類別服務(wù)和公告服務(wù)必須實(shí)現(xiàn)的接口。這兩個(gè)接口放在Interfaces下。
ICategoryService.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVCDemo.Models.Entities;

namespace MVCDemo.Models.Interfaces
{
    
/// <summary>
    
/// 分類服務(wù)組件接口
    
/// </summary>
    public interface ICategoryService
    {
        
/// <summary>
        
/// 添加分類
        
/// </summary>
        
/// <param name="category"></param>
        void Add(CategoryInfo category);

        
/// <summary>
        
/// 修改分類名稱
        
/// </summary>
        
/// <param name="id"></param>
        
/// <param name="name"></param>
        void ChangeName(int id,string name);

        
/// <summary>
        
/// 刪除分類
        
/// </summary>
        
/// <param name="id"></param>
        void Remove(int id);

        
/// <summary>
        
/// 取得某個(gè)分類詳細(xì)信息
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>
        CategoryInfo GetDetail(int id);

        
/// <summary>
        
/// 取得所有分類
        
/// </summary>
        
/// <returns></returns>
        List<CategoryInfo> GetAll();
    }
}


IAnnounceService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVCDemo.Models.Entities;

namespace MVCDemo.Models.Interfaces
{
    
/// <summary>
    
/// 公告服務(wù)組件接口
    
/// </summary>
    public interface IAnnounceService
    {
        
/// <summary>
        
/// 發(fā)布公告
        
/// </summary>
        
/// <param name="announce"></param>
        void Release(AnnounceInfo announce);

        
/// <summary>
        
/// 修改公告信息
        
/// </summary>
        
/// <param name="announce"></param>
        void Notify(AnnounceInfo announce);

        
/// <summary>
        
/// 刪除公告
        
/// </summary>
        
/// <param name="id"></param>
        void Remove(int id);

        
/// <summary>
        
/// 取得公告詳細(xì)內(nèi)容
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>
        AnnounceInfo GetDetail(int id);

        
/// <summary>
        
/// 取得某個(gè)分類下的所有公告
        
/// </summary>
        
/// <param name="categoryId"></param>
        
/// <returns></returns>
        List<AnnounceInfo> GetByCategory(CategoryInfo category);
    }
}


然后,我們?cè)贛ockModels下建立兩個(gè)Mock業(yè)務(wù)邏輯服務(wù)模型。注意它們要各自實(shí)現(xiàn)自己的接口。
MockCategoryService.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;

namespace MVCDemo.Models.MockModels
{
    
/// <summary>
    
/// “欺騙”服務(wù)組件,用于模擬分類的業(yè)務(wù)服務(wù)
    
/// </summary>
    public class MockCategoryService : ICategoryService
    {
        
/// <summary>
        
/// 添加分類
        
/// </summary>
        
/// <param name="category"></param>
        public void Add(CategoryInfo category)
        {
            
return;
        }

        
/// <summary>
        
/// 修改分類名稱
        
/// </summary>
        
/// <param name="id"></param>
        
/// <param name="name"></param>
        public void ChangeName(int id, string name)
        {
            
return;
        }

        
/// <summary>
        
/// 刪除分類
        
/// </summary>
        
/// <param name="id"></param>
        public void Remove(int id)
        {
            
return;
        }

        
/// <summary>
        
/// 取得某個(gè)分類詳細(xì)信息
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>
        public CategoryInfo GetDetail(int id)
        {
            
return new CategoryInfo
            {
                ID 
= id,
                Name 
= "最新通告",
            };
        }

        
/// <summary>
        
/// 取得所有分類
        
/// </summary>
        
/// <returns></returns>
        public List<CategoryInfo> GetAll()
        {
            List
<CategoryInfo> categories = new List<CategoryInfo>();
            
for (int i = 1; i <= 5; i++)
            {
                CategoryInfo category 
= new CategoryInfo
                {
                    ID 
= i,
                    Name
="通告類別"+i,
                };

                categories.Add(category);
            }

            
return categories;
        }
    }
}


MockAnnounceService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;

namespace MVCDemo.Models.MockModels
{
    
/// <summary>
    
/// “欺騙”服務(wù)組件,用于模擬公告的業(yè)務(wù)服務(wù)
    
/// </summary>
    public class MockAnnounceService : IAnnounceService
    {
        
/// <summary>
        
/// 發(fā)布公告
        
/// </summary>
        
/// <param name="announce"></param>
        public void Release(AnnounceInfo announce)
        {
            
throw new Exception("發(fā)布公告失敗了!原因?沒有原因!我是業(yè)務(wù)組件,我說失敗就失敗!");
            
return;
        }

        
/// <summary>
        
/// 修改公告信息
        
/// </summary>
        
/// <param name="announce"></param>
        public void Notify(AnnounceInfo announce)
        {
            
return;
        }

        
/// <summary>
        
/// 刪除公告
        
/// </summary>
        
/// <param name="id"></param>
        public void Remove(int id)
        {
            
return;
        }

        
/// <summary>
        
/// 取得公告詳細(xì)內(nèi)容
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>
        public AnnounceInfo GetDetail(int id)
        {
            
return new AnnounceInfo
            {
                ID 
= id,
                Title 
= "" + id + "則公告",
                Content 
= "全體同學(xué)明早九點(diǎn)集體做俯臥撐!",
            };
        }

        
/// <summary>
        
/// 取得某個(gè)分類下的所有公告
        
/// </summary>
        
/// <param name="categoryId"></param>
        
/// <returns></returns>
        public List<AnnounceInfo> GetByCategory(CategoryInfo category)
        {
            List
<AnnounceInfo> announces = new List<AnnounceInfo>();
            
for (int i = 1; i <= 10; i++)
            {
                AnnounceInfo announce 
= new AnnounceInfo
                {
                    ID 
= i,
                    Title 
= category.Name+ "的第" + i + "則公告",
                    Content 
= "全體同學(xué)明早九點(diǎn)集體做俯臥撐!",
                };

                announces.Add(announce);
            }

            
return announces;
        }
    }
}


      可以看到,這兩個(gè)類并沒有訪問數(shù)據(jù)庫,也沒有實(shí)現(xiàn)真正的業(yè)務(wù)邏輯,而不過是“捏造”了一些數(shù)據(jù)騙騙我們的表示層而已。
      最后,我們要建立一個(gè)生成業(yè)務(wù)邏輯模型的生成器,用來實(shí)現(xiàn)表示層和業(yè)務(wù)邏輯層的解耦。當(dāng)然,為了簡化復(fù)雜度,這里沒有使用依賴注入機(jī)制。下面是我們生成器的代碼,這個(gè)類是直接放在Models下的。
ServiceBuilder.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.MockModels;

namespace MVCDemo.Models
{
    
/// <summary>
    
/// 服務(wù)組件生成類,用于生成業(yè)務(wù)服務(wù)組件
    
/// </summary>
    public sealed class ServiceBuilder
    {
        
/// <summary>
        
/// 創(chuàng)建分類服務(wù)組件
        
/// </summary>
        
/// <returns>分類服務(wù)組件</returns>
        public static ICategoryService BuildCategoryService()
        {
            
return new MockCategoryService();
        }

        
/// <summary>
        
/// 創(chuàng)建公告服務(wù)組件
        
/// </summary>
        
/// <returns>公告服務(wù)組件</returns>
        public static IAnnounceService BuildAnnounceService()
        {
            
return new MockAnnounceService();
        }
    }
}


      OK,到這里,我們的準(zhǔn)備工作就做完了。完成這些后,系統(tǒng)的目錄結(jié)構(gòu)如下圖所示:

 
小結(jié)
      在這篇文章中,我們只是講了一下這個(gè)系列文章要做什么,以及為案例做了一些準(zhǔn)備工作。從下篇開始,我們將正式開始使用ASP.NET MVC完成這個(gè)案例。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET MVC案例教程—第四篇:傳遞表單數(shù)據(jù)
Asp.net MVC3 自定義HtmlHelper控件
在ASP.NET MVC 無需Web Form和Report Viewer 預(yù)覽SSRS報(bào)表解決方案...
MVC實(shí)用架構(gòu)設(shè)計(jì)(三)——EF-Code First(1):Repository,UnitOfWork,DbContext
ASP.NET MVC Bootstrap極速開發(fā)框架
ASP.NET MVC5 網(wǎng)站開發(fā)實(shí)踐(二) Member區(qū)域 - 咨詢管理的架構(gòu)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服