軟件/環境 | 說明 |
---|---|
操做系統 | Windows 10 |
SDK | 2.1.401 |
ASP.NET Core | 2.1.3 |
IDE | Visual Studio Code 1.27 |
瀏覽器 | Chrome 69 |
你可能須要的前置知識html
https://baike.baidu.com/item/mvcgit
ASP.NET Core 默認集成了DI。全部官方模塊的引入都要使用DI的方式引入。github
https://baike.baidu.com/item/IOCweb
.NET平臺的項目構建有兩個概念:解決方案(Solution)、項目(Project)。
全部的項目開發,不管是Web項目,仍是控制檯應用程序,都必須基於Project來構建。而Solution的做用就是把Project組織起來json
若是項目簡單,咱們只須要基於Project來構建項目便可,可是當項目須要分層解耦時,咱們若是在Project建立目錄來隔離並不能起到硬性隔離的做用,畢竟只要在一個Project中就能夠引用。而經過Project來分層就能夠作到硬性隔離的效果。並且基於Project的代碼複用更簡潔合理(編譯產出.dll能夠在其餘項目中引用等)瀏覽器
解決方案(Solution)+ 項目(Project)就至關於用Maven構建的Java項目中,頂層Project和Project的關係。
#建立項目目錄 mkdir Ken.Tutorial #進入項目目錄 cd Ken.Tutorial
dotnet new sln -n Ken.Tutorial
dotnet new web -n Ken.Tutorial.Web
dotnet sln add Ken.Tutorial.Web
擴展名 | 說明 |
---|---|
vscode-solution-explorer | 建立、刪除、重命名或移動解決方案、解決方案文件夾和項目。管理項目引用。 |
VS Code 擴展管理頁直接搜索擴展名安裝便可,本次安裝的版本是:0.2.33bash
菜單:文件->打開文件夾,選擇項目目錄打開項目服務器
由於已經安裝了VS Code的C#擴展和Solution擴展,因此也會提示缺失相關配置mvc
C#擴展提示:app
Required assets to build and debug are missing from ‘helloweb’. Add them?
這是由於項目缺乏編譯、調試配置,選擇Yes
便可
vscode-solution-explorer擴展提示:
Would you like to create the vscode-solution-explorer templates folder?
這是由於vscode-solution-explorer插件須要項目中的解決方案提供相應的模板。
全部插件默認的配置文件,都會放在.vscode文件夾中
資源管理器中除了默認的面板,咱們安裝的Solution插件還會提供友好的Solution Explorer。這個視圖的風格,有VS(Visual Studio)的既視感。
後續項目開發徹底能夠隱藏默認資源管理器,使用Solution Explorer就好。
菜單 | 快捷鍵 | 說明 |
---|---|---|
Add existing project | / | 添加已存在的項目(Project) |
Add new project | / | 新建項目(Project) |
Create folder | Ctrl+Shift+F | 建立文件夾 |
Open File | / | 打開解決方案文件(.sln) |
Rename | F2 | 修改解決方案名稱 |
Build | / | 編譯解決方案(Solution) |
Clean | / | 清理解決方案(Solution)的編譯輸出 |
Pack | / | 解決方案(Solution)打包 |
Publish | / | 發佈解決方案(Solution) |
Restore | / | 恢復解決方案(Solution) |
Test | / | 執行解決方案(Solution)中的單元測試 |
菜單 | 快捷鍵 | 說明 |
---|---|---|
Add package | / | 添加package |
Add reference | / | 引用解決方案中的其餘項目 |
Create file | Ctrl+Shift+A | 建立文件 |
Create folder | Ctrl+Shift+F | 建立文件夾 |
Move | / | 移動項目(Project) |
Remove project from solution | Del | 從解決方案中移除項目(Project) |
Paste | Ctrl+V | 粘貼 |
Open File | / | 打開項目文件(.csproj) |
Rename | F2 | 修改解決方案名稱 |
Build | / | 編譯項目(Project) |
Clean | / | 清理項目(Project)的編譯輸出 |
Pack | / | 項目(Project)打包 |
Publish | / | 發佈項目(Project) |
Restore | / | 恢復項目(Project) |
Test | / | 執行項目(Project)中的單元測試 |
修改應用啓動類(Startup.cs),引入MVC模塊並配置默認路由
public class Startup { public void ConfigureServices(IServiceCollection services) { //引入MVC模塊 services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(routes => { //配置默認路由 routes.MapRoute( name: "Default", template: "{controller}/{action}", defaults: new { controller = "Home", action = "Index" } ); }); } }
在Ken.Tutorial.Web項目中添加文件夾:Controllers
,並在文件夾中建立類HomeController
類型選擇爲:class
using System; namespace Ken.Tutorial.Web.Controllers { public class HomeController { } }
Controller
using System; using Microsoft.AspNetCore.Mvc; namespace Ken.Tutorial.Web.Controllers { public class HomeController : Controller { } }
ControllerName=Home
using System; using Microsoft.AspNetCore.Mvc; namespace Ken.Tutorial.Web.Controllers { public class HomeController : Controller { public IActionResult Index() { return Content("Hello World!"); } } }
ActionName=Index
修改Ken.Tutorial.Web項目Properties文件夾中launchSettings.json文件,使用HTTP協議並監聽端口5001
"Ken.Tutorial.Web": { "commandName": "Project", "launchBrowser": true, "applicationUrl": "http://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }
按下F5啓動項目,項目啓動成功後,VS Code會幫咱們打開默認瀏覽器並訪問:http://localhost:5001
之因此顯示HomeController中Index(Action)的返回內容,是由於咱們前面定義了默認路由能夠從{controller}/{action}訪問路徑對應Action,而咱們又定義了默認值:controller = "Home", action = "Index"
routes.MapRoute( name: "Default", template: "{controller}/{action}", defaults: new { controller = "Home", action = "Index" } );
咱們也能夠經過http://localhost:5001/home/index
顯示訪問
在HomeController
添加Action:Time
public IActionResult Time() { //將當前服務器時間放入ViewBag中 ViewBag.ServerTime = DateTime.Now; return View("Time"); }
在項目中建立文件夾 Views
,並建立對應的HomeController視圖子文件夾:Home
。
之因此這樣建立文件夾,是由於當咱們返回視圖時,只指定ViewName,而不指定完整的路徑。ASP.NET Core MVC框架會默認在如下項目目錄中依次讀取視圖文件:
若是找到視圖文件便會渲染視圖,若是沒找到便會拋出異常。
建立視圖文件 /Views/Home/Time.cshtml
@ViewBag.ServerTime -ken.io
視圖渲染時@ViewBag.ServerTime
會輸出Action中賦值的內容,-ken.io
會被做爲字符串渲染
按下F5啓動項目,項目啓動成功後在瀏覽器中輸入http://localhost:5001/home/time
並訪問,將會看到如下輸出:
https://github.com/ken-io/asp...
本文首發於個人獨立博客:https://ken.io/note/asp.net-c...