C# ASP.NET 希望在前端中使用web.config的值該怎麼辦

前言

近期有一個C# MVC的專案在準備收尾了,但想不到前幾天去測試的時候

發現有 IIS的路徑問題,故在後端web.config設定了一個值,然後希望可以在前端被使用

這時候當然用ViewBag 在每個用到的 Controller的Action裡面寫是可以的

然後前端用類似 @ViewBag.XXconfig 是可以的

但因為這個參數會被大量使用,要是那樣寫會寫到升天,故在尋找更好的做法

解決方法

在思考了一陣子之後,因為該參數具有不會變的特性,且會在前端被大量使用到

故決定使用JS的全域變數來儲存資料

要達成這點我們需要在後端建立一個class來幫助我們取得資料

在這裡我們建立了一個cs檔,裡面設了一個簡單的參數 VirtualPath 以及它對web.config的取值辦法

using System;
using System.Configuration;

namespace Project_test
{
    public class SettingUtil
    {
        public static string VirtualPath
        {
            get
            {
                return ConfigurationManager.AppSettings["virtualPath"];
            }
        }
    }
}

下一步,就是去前端設定了

    @using Project_test

    @model Project_test.SettingUtil

<script>
    if (window.virtualPath === undefined) {
        window.virtualPath = "@SettingUtil.VirtualPath";
    }
</script>

在前端我們會用到Razor語法,是一種用於嵌入C#代碼的標記語言,通常用於前端的視圖(View)文件。

首先先將命名空間(namespace)引用到當前的視圖中,下一行的 @model Project_test.SettingUtil 則是指定了Razor視圖的模型類型。

而JS方面為了防止效能的損耗,加上了undefined的判斷,防止重複作業。

因為是設定全域變數的原因,建議在進入的首頁加上設定,這樣就可以在整個作業中都用到後端的值了。


結論

C# MVC寫一寫,總感覺跟之前寫過的 C# ASP.NET Web Form 比起來也差太多了

或是因為之前Web Form的專案都太舊了,整天都在煩惱updatePanel就飽了哈哈哈~

希望文章有幫上一點忙,畢竟對專案來說沒有最好的做法,只有最合適的做法

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

其他筆記們

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *