在開發網站時,我們經常會讓前後台網站獨立成兩個專案,這時候有一些共用的程式會獨立成另一個類別庫,讓前後台都可以引用(加入參考)。
閱讀全文〈ASP.NET Core 3.0 新增專案(類別庫 .NET Standard 2.0)〉ASP.NET Core 3.0 登入機制實作(claims-based authentication)
我們開新專案時,專案範本可以選擇「個別使用者帳戶」驗證方式,這時候專案就會有登入的機制了,但是很多工程師都不這麼用,理由是:
1. 他是 core first 的方式,不是它們習慣的 db first。
2. 要客製化時要改很多code,感覺太麻煩。
不過有個時機可能會用到他,就是要整合第三方登入機制,如Facebook, Twitter..等等,因為只要設定一下,就可以了。
閱讀全文〈ASP.NET Core 3.0 登入機制實作(claims-based authentication)〉ASP.NET Core 3.0 如何使用 Database First
我的還是比較習慣先開好資料庫,再使用Database First 進行開發,但是目前 ASP.NET Core 3.0 並沒有類似 MVC 5 的 EntityFramework Reverse POCO Generator 的工具,而是要使用 Power Shell 的指令來產生 Models ,可以參考
可以參考 : https://docs.microsoft.com/zh-tw/ef/core/get-started/aspnetcore/existing-db
閱讀全文〈ASP.NET Core 3.0 如何使用 Database First〉ASP.NET Core 3.0 靜態檔案(Static Files)
在開發 ASP.NET MVC 5 時,css、fonts、js…等等的靜態檔案(Static Files),都是放在專案裡頭的 Content 的資料夾,但是在開發 ASP.NET Core 3.0 的時候,我們特別要注意的是,要必須 把HTML 所用到的靜態檔案放到 wwwroot 裡頭。

ASP.NET Core 3.0 (Preview 7) 建立 Web 應用程式
使用 .NET Core 3.0 已經一陣子了,最早我是用 .NET Core 3.0 (Preview 5) 寫了公司的內部系統,剛開始不熟,直接在Controller 打預存程式回傳 ViewModel 的格式,直接給 Razor 來用,若以小型專案來說,算是一個滿有效率的解決方案。
目前開發 .NET Core 3.0 時,要使用 Visual Studio 2019,我目前的 版本 16.1.6。
另外安裝 .NET Core 3.0 的 SDK,下載連結: https://dotnet.microsoft.com/download/dotnet-core/3.0 ,可以下載 Preview 7 版
先來說明安裝後,如何開新專案
閱讀全文〈ASP.NET Core 3.0 (Preview 7) 建立 Web 應用程式〉Angular 專案升級備忘
我一直以為 ng update 就可以將 Angular 專案升級到最新版,試了幾次之後,專案還停留在原來版本,才知道事情沒那麼簡單。
閱讀全文〈Angular 專案升級備忘〉如何在ASP.NET MVC 加上 NLog
Step01. 到「管理Nuget套件」安裝 Nlog 及 NLog.Config
閱讀全文〈如何在ASP.NET MVC 加上 NLog〉
ASP.NET MVC ALERT訊息做法
這是一個簡單的問題,說明如下
Step01. 在Action中設定 TempData[“message”] = “此帳號已被註冊”;
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.UserName); if (user != null) { //TempData 只會被讀一次,之後就會失效 TempData["message"] = "此帳號已被註冊"; return View(model); }else { //執行註冊 //完成後,轉頁 } } return View(model); }
Step02.在 _layout.cshtml 中判斷 TempData[“message”] 有沒有值,有值就出現alert
<!DOCTYPE html> <html lang="zh-TW"> <head> @if (TempData["message"] != null) { <script type="text/javascript"> var message = @Html.Raw(Json.Encode(TempData["message"])); alert(message); </script> } </head> <body> @RenderBody() </body> </html>
ASP.NET MVC ModelState.IsValid 說明
在ASP.NET MVC 中使用模型繫結 (Model Binding)時,我們會使用 ModelState 去驗證有沒有綁好,說明如下:
[ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { //有綁好,可以往下做 }else{ //沒有綁好 return View(model); } }
ASP.NET MVC 的 ValidateAntiForgeryToken機制
這是ASP.NET MVC 為防止 CSRF (Cross-Site Request Forgery) 跨站偽造請求的攻擊的設計,作法如下:
Step01. 在 Action 加上 [ValidateAntiForgeryToken] 標籤
[ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { ... return View(); }
Step02. 在 cshtml 就必須要加上 @Html.AntiForgeryToken(),否則會出錯
@using (Html.BeginForm("Login", "Account", FormMethod.Post)) { @Html.AntiForgeryToken() }