ASP.NET網頁之間傳遞參數與值,方法很多,可以使用Application,Cookie,Session,或是Querystring等等。
由於Insus.NET開發的程式中,多數是在後台之間進行參數與值傳遞,因此很少使用Querystring,而是使用Session。Session? 我也會。 是的,使用Session進行傳遞參數與值,懂開發的程式員都會。
使用Session傳遞網頁之間的參數與值,可以做到輕微量級或是輕量級。
為了參數與值方便進行管理,Insus.NET會把這些存放一個集合內,時行傳遞。 在專案中,會建立一個類別。
中,20#代碼,是一個靜態方法,它有兩個參數,一個是Dictionary<object,object>和一個string url。參數集合將被存入Session來傳遞,而url是目標網頁的地址。就是這樣簡單。
而30#和32#行代碼,那是一個擴充方法。是判斷參數集合在添加參數時是否已經存在,存在的話,只是修改參資料值即可。
這樣子就行了。
來示範一下吧。在網網站建立兩個網頁,PageA.aspx和PageB.aspx. 前者在使用者點一點銨鈕或某一事件處理完畢,把一些參數傳至另外一個頁面,而後者,是接收參數,再進行其它邏輯處理。
在PageA.aspx拉一個銨鈕Button.
這些不是重點,重點在Button的Click事件中:
在pageB.aspx.cs接收參數:
第15,16行代碼,如果使用者直接在地址欄上輸入.../PageB.aspx的話,網頁會被導向PageA.aspx,也就是說,第一次不能直接存取PageB.aspx,而是需要先從PageA.aspx點擊了銨鈕之後,才可以進入pageB.aspx.
看看示範,示範是把源網頁的路徑傳至目標網頁中。
另外一個需要注意的是Session["TransferObject"]的名稱"TransferObject"需要和最初建立一個類別InsusBase.TransferParameter()方法內的session名稱相同。
是否有改善的地方,讓在開發時,不必記住這樣多session參數名呢?方法是有的。下面就是Insus.NET需要解決的地方。
開啟InsusBase.cs類別,分三步實現:
在接收參數的網頁,使用靜態屬性來替代session以及session的參數名。這樣解決可以上面所提及的問題。