2024年6月1日 星期六

使用 Knockout.js 建立動態 UI

 使用 Knockout.js 建立動態 UI

---

Introduction to Knockout.js and CRUD Operations in ASP.Net Web Forms Using Knockout.JS

knockout.js-初體驗

Knockstrap


使用 ASP.NET Web API 建置 RESTful API

 使用 ASP.NET Web API 建置 RESTful API

---


理財工程師 Mars 運用工程師能力創造財富自由人生

 理財工程師 Mars 運用工程師能力創造財富自由人生

--

不錯!  

運用工程師能力創造財富自由人生


ASP.Net 的Cookie簡介及用法

 ASP.Net 的Cookie簡介及用法


Cookie(餅乾)是一個在網頁應用程式上拿來儲存瀏覽者資料的做法之一‧ 例如,當一個瀏覽者參觀您的網站時,您就可用Cookie把對方的一些資料儲存起來,並且下一次再使用‧ 另外,如果您有學習過ASP, PHP這類語言的話,相信Cookie對你絕對不陌生‧ 假設您是學習VB, C++的設計師的話,用Cookie就好比是寫資料到使用者的Registry裡一樣‧ 只是用Cookie比較簡單,而且對初學者而言,Cookie也比Registry還容易瞭解!


Cookie事實上是以純文字方式儲存在使用者電腦某資料夾裡面的,以Microsoft Windows NT (2000, XP)的使用者來說,每一個使用者都有一個自己個人的資料夾來放Cookie檔案,而這資料夾通常都會在『C:\Documents and Settings\使用者\Cookies\』這邊‧ 每一個Cookie都儲存著每一個不同網站所存的資料,而每一項所擁有的資料都會不同,這會看網站程式編寫者而定‧ 有時候Cookie會儲存您在某一網站的帳號或密碼、會員身份、登入/登出日期等等‧ 甚至Cookie也可以拿來做是防治瀏覽者重覆投票的防範方法之一!


在使用Cookie上,注意cookie使用也是有一些限制的! 例如一般瀏覽器至少都會支援4096 Bytes的Cookie,允許20個(各網站‧如果您嘗試使用超過更多的Cookie,那麼小心舊的Cookie就會莫名其妙消失!),也許看起來很少,不過基本上卻已經足夠儲存你純文字的資料了! 另外也有一些瀏覽器會有只允許儲存共300 Cookies的限制(所有網站的加起來)‧ 還有,每一個Cookie都會有它的存活時間! 基本上來說,Cookie除了靠網站程式結束外,如果您自己關閉了瀏覽器,那麼Cookie也會自動消失‧ 不過值得慶幸的是您可以自由的設定Cookie的過期時間,這我將會說明!


『筆記:剛才提到了Cookie是儲存在瀏覽者電腦裡面的,所以身為網頁程式編寫者的您,也必須留意到瀏覽者也是會隨意的刪除或想辦法亂修改的! 有時太過相信Cookie的資料內容的話,也可能會導致一些人為問題喔!』



用ASP.Net 寫入一個Cookie資料



假設您是純ASP (Active Server Pages)的學習者,也許在剛開始接觸ASP.Net時可能會有點不習慣! 以Cookie做例子,要閱讀或寫Cookie絕對不是像ASP這樣:


閱讀Cookie資料(ASP):

Dim mycookie : mycookie = Request.Cookies("eat_cookie")


寫入Cookie資料(ASP):

Response.Cookies("eat_cookie") = "C is a cookie!"


在ASP.Net,跟ASP一樣,要寫Cookie都會要使用Response property,要讀用Request‧ 就先講寫入Cookie吧! 如果您想要建立一個Cookie資料,您可以創造單一個Cookie,或在同一時間建多重也是可以(Sub Cookies)‧ 單一的話:

Response.Cookies("mycookie").Value = "C is a cookie!"


要建立一個Sub cookie的話:

Response.Cookies("mycookie")("flavor") = "Coffee"


剛才我有提到Cookie過期的話題,如果要另外加長的話,那麼(假設存活時間設一年):


Response.Cookies("mycookie").Value = "C is a cookie"

Response.Cookies("mycookie").Expires = DateTime.Now().AddDays(365)


註:用Sub cookie也是用類似的方法來設定存活時間


假如我的網站有Sub domain的話,您也可以設定Domain property來分享Cookie:

(例如我的網站叫www.tekcyberspace.com,然後我有一個Sub domain叫forum.tekcyberspace.com)

Response.Cookies("mycookie").Value = "C is a cookie"

Response.Cookies("mycookie").Expires = DateTime.Now().AddDays(365)

Response.Cookies("mycookie").Domain = "forum.tekcyberspace.com"



閱讀Cookie資料



讀Cookie就比較簡單了‧ 我就直接講吧! 假設要讀單一Cookie的話:

Dim get_mycookie As HTTPCookie = Request.Cookies("mycookie")


寫出一個Cookie資料:

Dim get_mycookie As HTTPCookie = Request.Cookies("mycookie")

If Not get_mycookie Is Nothing Then

Response.Write(get_mycookie.Value)

End If

注意如果沒有Cookie在的話,你接受到的會是 Nothing‧


讀取並寫出Sub cookie資料:

Dim get_mycookie As String = Request.Cookies("my_cookie")("flavor")

If not get_mycookie = "" Then

Response.Write(get_mycookie)

End If


Cookie怎麼寫就怎麼讀

  Cookie怎麼寫就怎麼讀


using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;


public partial class B : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            //產生一個Cookie

            HttpCookie cookie = new HttpCookie("test");

            //設定單值

            cookie.Value = Server.UrlEncode("Hello!!世界");

            //設定過期日

            cookie.Expires = DateTime.Now.AddDays(2);

            //寫到用戶端

            Response.Cookies.Add(cookie);


        }

    }



    //讀取cookie(以多值的方式)

    protected void btn_test_Click(object sender, EventArgs e)

    {

        HttpCookie cookie = Request.Cookies["test"];

        foreach (string value in cookie.Values)

        {

            Response.Write("Null?"+(value==null)+"<br/>");/*順便測試看看是否為null還是空字串*/

            Response.Write("空字串?"+(value=="")+"<br/>");

            Response.Write("foreach迴圈中撈出Request.Cookies['test']所有的Value:" + Server.UrlDecode(value)+"<hr/>");

        }


        Response.Write("Null?"+(cookie["test"]==null)+"<br/>");

        Response.Write("空字串?" + (cookie["test"]=="")+"<br/>");

        Response.Write("cookie['test'](HttpCookie物件裡索引名為test的值):"+Server.UrlDecode(cookie["test"])+"<hr/>");

    }

}