(分享)不知道這樣是否就是代碼分離?? 非 ASP.NET MVC

想睡覺
因為我寫的php 是可以把html 與 程式碼分開 ,然後再組合起來

於是心裡想 asp.net 如果不透過MVC 是否可以達成這樣的功能

試了一下之後 終於出來了 如果搭配LINQ更是方便

程式如下

test.aspx
     //補充 該陣列值必需與html一樣

       Dictionary<string, string>  arr = new Dictionary<string, string>();
        arr.Add("t", "顯示文字...");
        string str = AD.FileGet(Server.MapPath("test.html"));
        string data = AD.StrMergeVar(str, arr);
        Response.Write(data);


test.html
$t


function 的部份
執行出來可以顯示 a22
//讀取html檔
        public string FileGet(string file)
        {
            string data = string.Empty;
            data = File.ReadAllText(file);
            return data;
        }

        //將html變數名稱取代
        public string StrMergeVar(string fm, Dictionary<string,string> var_array, string replace_key = "$")
        {
            if (fm.Length > 0)
            {
                foreach (KeyValuePair<string, string> kvp in var_array)
                {
                    fm = fm.Replace(replace_key + kvp.Key, kvp.Value);
                }
            }
            return fm;
        }

想睡覺
補充一下
會有這樣的想法
是因為 美工看不懂asp.net 元件控制項,如果用code behind的話 有些html會因為使用asp.net元件控制項來顯示
導致 美工部份都會要求我再改程式,但我又不會asp.net MVC = =
於是想到這個方法來顯示單純的HTML 而不透過 ASP.NET 元件控制項來寫
這樣美工萬一又要改css 或是調整 就不用再需要我了

上面的補充 該陣列值必需與html一樣
筆誤 "應該是陣列索引 必需和html 的使用名稱與陣列索引一樣"
topcat
如果是WebForm(aspx)的話
不用【伺服器控制項(Server Control)】,也可以用【Html Control】

也就是在html的標籤上,加上【id】與【runat=server】

例如,
div
您可以寫
<div id="div1" runat="server">
</div>


那麼,就可以在CodeFile(aspx.vb or aspx.cs)去控制他
vb.net
div1.visiable="false"


c#
div1.visiable="false";



^_^
topcat
另外,建議可以學習Razor的作法

因為無論是現在的
ASP.NET MVC5
ASP.NET Core MVC
ASP.NET Core Razor Page
ASP.NET Core Blazor
或者今年年底從.NET Core演變到.NET 5

都可以使用
^.^a


topcat
補充一下
使用Html Control的話
對於美編人員來說
就是一般的html語法,再加上runat的屬性而以

^.^a
缺氧的羊:窒息
這個算是自己去寫 asp.net 的 php樣版...

基本上能解決問題就是好方法(我自己也有寫一些類似的)




Allen
將版型取出, 填入變數值, 是可行的作法, 例如要發送Email,也可以將Email內文先做成版型; 此外, 您也需要想好如何處理多筆記錄, 例如載入版型,填入多筆記錄, 結果會是一個表格, 而版型裡,則只需要寫一列空白列即可
想睡覺
不好意思因為最近比較忙都沒時間上來...謝謝各位大大們分享自己寶貴的意見
回到頂部