.Net core如何在本機開發環境切換不同的組態設定appsettings來進行測試

我們在寫程式時,通常會把設定寫在appsettings.json裡面,但是不同的開發環境會有不同的設定值(例如:檔案產出路徑…etc)。.Net預設會使用appsettings.json這個檔案的設定值,但如果我們有不同的組態設定檔時(例如:DEV. SIT. UAT. PRD)。我們就要分別先新增appsettings.DEV.json, appsettings.SIT.json,appsettings.UAT.json,appsettings.PRD.json,其中的DEV.SIT.UAT會對應到不同的環境變數(appsettings.{環境變數}.json),有了不同環境的設定檔後,下面會來教大家要如何在本機開發環境切換不同的設定檔來進行測試。

...繼續閱讀 »

IIS部屬Angular

當前端網頁開發完成後,接著就是實際放到iis上了(不然就只能一直再本機上面執行),過程中可能會遇到一些問題(CORS. 路徑設定…etc),趁著這次剛好有機會時做整個過程,就順便把整個過程做個紀錄。

...繼續閱讀 »

從無到有建立一個前後端分離的新專案(Angular + .Net Core WebAPI + PostgreSQL)

最近工作剛好有個自己從無到有建置一個專案的機會,自己也是第一次從無到有的自己建置一個專案,機會難得,紀錄一下整個過程,大致會有下列幾個主要步驟:

  1. 建立後端.Net Core WebAPI新專案
  2. 建立Angular新專案,並安裝Angular Material & Bootstrap
  3. 建立資料(Repository)層
  4. 後端API權限設定
  5. Angular呼叫後端WebAPI & CORS處理
...繼續閱讀 »

.Net Core WebAPI 傳值到後端Controller的方法

網頁功能最常用的就是資料間的傳遞,不管事表單資料傳送到後台,或者是輸入查詢資料後,由後端DB回傳資料。這之間都少不了傳輸資料到後台。
在以前MVC的時候,可以透過Razor語法的HTML Helper的BeginForm,在Submit之後,會透過ModelBinding把資料傳到後端Controller。
或是在View直接把整個Form序列化(serilizeArray)後再傳給後端。
現再寫前後分離(Angular + .Net 6 WebAPI)採用WebAPI來開發,剛完成第一個前後分離專案,順便把資料傳送到Controller的方式記錄下來。

...繼續閱讀 »

介面 & 注入

上篇跟大家簡單的介紹了什麼是耦合,其中有提到依賴反轉原則(D.I.P.),其中有一點是說高層次的模組不應該依賴於低層次的模組,兩者都應該依賴抽象介面。

...繼續閱讀 »

從頭建置一個MSTest單元測試專案

之前工作時就有接觸到單元測試(Unit Test),但僅限於使用別人寫好的單元測試而已。目前工作上剛好有機會能自己寫單元測試,就把整個從建立但撰寫到執行單元測試的過程記錄下來。

使用的單元測試框架為.Net Core內建的MS Test。

再開始寫單元測試前,介意先看一下保哥寫的單元測試系列文,建立一些對於單元測試的觀念=>保哥-單元測試相關系列文章

...繼續閱讀 »

.Net Core使用FromSqlRaw()直接下SQL撈取資料,並存放到自定義類別

撈取DB資料時,如果是單一資料來源的話,直接使用EF Core是很方便。但更多時候資料來源是多張表單,Join完之後又要Group By,好了之後再把結果拿去Join其他表,或是再做子查詢。像這種時候如果沒有寫成View而是直接用Lambda或是LinQ語法來兜的話,實在是寫得很痛苦。以我來說,只要是查詢語法比較複雜的話我都習慣直接下SQL語法,再用自定義類別來接查詢結果。

記得以前在.Net Framework的時候,做法好像沒有這麼複雜,.Net Core會比較複雜一點,以下是使用PostgreSQL來實作,但使用MS SQL應該也不會差太多。

另外附上以前.Net Core3使用ADO.Net的方式

...繼續閱讀 »

利用Docker Desktop on Windows建立MS SQL Server Container

公司筆電因為權限問題,安裝MS SQL時都會一直報錯,無法安裝,但有些功能還是MS SQL使用比較習慣。

後來決定自己在VirtualBox上架個Linux的VM(不選Windows是因為不想花錢買序號)在裡面架設MS SQL SERVER,但步驟又有點複雜,且架好之後,本機又會連線不到VM環境的SQL SERVER,也沒那麼多時間去研究環境問題,於是就放棄了。

後來又在Azure上架了一台MS SQL Server,雖然步驟不複雜,也可以成功連線,但試用期過後每個月都要扣錢,對於只是用來做些測試功能的我來說,實在是不划算。

後來想說自己也沒有接觸過Docker這個東西,就趁這個機會,架了一個SQL SERVER服務,結果也能成功連線,就順便把整個過程記錄下來。

...繼續閱讀 »

透過postMessage完成兩個分頁之間資料互相傳輸

最近有個需求
大概是主要畫面為輸入表單(母頁面),輸入完成後,會把資料存放到List,要查看時就透過Modal彈跳視窗顯示(子頁面)。
但User有新需求為想要邊編輯表單資料又可以同時看到資料List,那麼就不能用Modal彈跳視窗的方式來完成。
因為Modal彈跳視窗其實是個遮罩,會造成遮罩後的頁面功能無法使用。
勢必要用兩個分頁來處理,但主.次頁面之間會有資料互相傳遞,這時就能透過postMessage這個API來處理

...繼續閱讀 »

AJAX 加入 AntiForgeryToken

為了防止CSRF攻擊,我們可以在MVC的Controller加上ValidateAntiForgeryToken這個標籤來進行Token的驗證,通常在前端的Form裡面也會加上@Html.AntiForgeryToken()來產生要跟後端驗證的Token,但如果有時候只是要透過AJAX來進行資料異動(ex:刪除資料)這種沒有表單的動作時,我們要把@Html.AntiForgeryToken()加在哪裡才不會打AJAX時老是出現500的回應呢?

...繼續閱讀 »

JQuery如何把特殊符號(ex:< . >)當成純字串顯示

今天上班時遇到個問題,我有一個表單是允許輸入特殊符號的(ex:'<'. '>')。表單輸入完後要把輸入的資料組合成tr. td字串append到我的<table>後面,但卻遇到了個問題。只要我輸入的表單欄位有包含'<'或是'>',render出來的畫面都會怪怪的,雖然知道應該是特殊符號的問題導致HTML變的怪怪的,但之前都是有遇到問題才去找答案,為節省日後時間,就趁這次機會做個筆記記錄下來。

...繼續閱讀 »

使用Unobstrusive-AJAX來執行AJAX

Unobstrusive-AJAX是為微軟的一個Js套件,你可以再HTML標籤裡加上一些特定的屬性,不用自己寫$.ajax類似的Js程式碼,即可完成以前的AJAX效果。其實優點我也不是很懂,google一下是說可以不用在前端cshtml裡面寫太多的javascript吧,可以把大部分的Js程式移到外部js檔,讓html跟Js切分得更乾淨。

...繼續閱讀 »

jQuery Validation Plugin + jQuery.validate.unobtrusive + AJAX,不透過form submit來做網頁表單驗證

表單驗證是網頁很常用的功能,通常是submit會觸發驗證流程(會把jQuery.validator.unobtrusive.parse("#form1");  會把檢核觸發寫在submit button裡)。但今天收到個需求,網頁因為某些因素不想透過submit 表單post資料到後台,想要透過ajax的方式來post資料,但validator又一定需要把要驗證的<input>包在<form>裡面的情況下(如果把<form>拿掉,就不會有驗證效果),要如何觸發表單驗證?

...繼續閱讀 »