頁面程序流程
頁面程序啊犬,指與頁面相關(guān)的程序邏輯代碼灼擂。
頁面程序流程,指帶有一定執(zhí)行順序的頁面程序邏輯代碼觉至。
- 頁面的程序流程有哪些剔应?
- 頁面的程序流程的執(zhí)行順序是怎樣的?
try{
if(Check)
{
會話期限 else { 記錄操作 return }
用戶登錄 else { 記錄操作 return }
功能權(quán)限 else { 記錄操作 return }
用戶權(quán)限 else { 記錄操作 return }
}
界面風(fēng)格
業(yè)務(wù)邏輯(Page_Load/界面操作事件)
語言
記錄操作
} catch(e){
記錄錯誤
顯示錯誤
復(fù)原窗口
}
- 每個程序流程在頁面打開事件中是否執(zhí)行语御?
- 每個程序流程在界面操作事件中是否執(zhí)行峻贮?
頁面打開事件,指頁面打開時執(zhí)行的邏輯程序应闯,如WebForm的Page_Load纤控、微信小程序的OnLoad
界面操作事件,指如按鈕的點(diǎn)擊事件碉纺、文本框的更改事件等
程序流程 | 頁面打開事件 | 前后端分離 的 界面操作事件 |
WebForm 的 界面操作事件 |
---|---|---|---|
會話期限 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
用戶登錄 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
功能權(quán)限 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
用戶權(quán)限 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
界面風(fēng)格 | 執(zhí)行 | 不需要執(zhí)行 | 實(shí)際上執(zhí)行 |
業(yè)務(wù)邏輯 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
語言 | 執(zhí)行 | 可能執(zhí)行 | 實(shí)際上執(zhí)行 |
記錄操作 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
記錄錯誤 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
顯示錯誤 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
復(fù)原窗口 | 執(zhí)行 | 執(zhí)行 | 執(zhí)行 |
前后端分離指類似安卓app船万、蘋果app、微信小程序骨田、Vue的開發(fā)模式耿导,即前端通過ajax無刷新更新的方式加載數(shù)據(jù)。
WebForm指asp.net的aspx后綴的頁面開發(fā)模式盛撑,即開發(fā)模式主要依賴于from碎节,每個事件會把form里的所有數(shù)據(jù)通過form提交到后端。
會話期限與用戶登錄
【會話】與【用戶】的關(guān)系:
- 一個【會話】只能有一個【用戶】抵卫,表示登錄的用戶狮荔,如果未登錄用戶胎撇,則【會話】中的【用戶】相關(guān)信息為null。
- 一個【用戶】可以有多個【會話】殖氏,因?yàn)橛脩艨梢缘卿浽诙鄠€設(shè)備上晚树、多個瀏覽器上、多個使用環(huán)境上雅采、以及瀏覽器的多個選項(xiàng)卡上爵憎。
登錄用戶的程序流程:
- 驗(yàn)證用戶賬號和密碼是否正確
- 把【用戶】的相關(guān)信息記錄在【會話】中
- 當(dāng)?shù)卿浀摹居脩簟恳延械卿浽诙鄠€地方的【會話】,則提示用戶是否退出該用戶正在使用的其它地方的【會話】婚瓜,并提醒該用戶其它地方的使用者:“有其它地方已登錄你的賬號”宝鼓。
在原框架中,同一個用戶不能同時登錄多個使用端巴刻、或多個瀏覽器愚铡、或多個瀏覽器上的選項(xiàng)卡。
在新框架中胡陪,不再做同時登錄同一用戶的限制沥寥。
主動登錄用戶的操作流程:
- 未登錄情況下
- 打開管理界面(Main.aspx)
- 點(diǎn)擊右上角登錄按鈕
- 彈出登錄窗口
- 錄入賬號密碼
- 點(diǎn)擊登錄
- 關(guān)閉登錄窗口,并提示登錄成功
在原框架中柠座,未登錄情況下邑雅,是不能直接打開主界面(Main.aspx)的,只能先打開登錄界面(Login.aspx)妈经。
在原框架中淮野,登錄入口有兩種,分別在登錄頁面(Login.aspx)狂塘、主界面(Main.aspx)使用過程中要求重新登錄時录煤。
而在新框架中,取消了使用登錄頁面的入口(Login.aspx)荞胡,保留了主界面的登錄入口妈踊,這樣做的好處是:
- 有些功能可能不需要要求用戶登錄,這樣在主界面未登錄情況下直接打開即可泪漂。如:新聞公告廊营、活動公告、節(jié)假日公告等
- 統(tǒng)一登錄界面的入口萝勤,使登錄入口只保留一種入口露筒。
打開功能時要求登錄的操作流程:
- 未登錄情況下
- 打開管理界面(Main.aspx)
- 點(diǎn)擊菜單欄的功能菜單項(xiàng)
- 彈出指定功能的窗口與頁面界面,如果該功能需要登錄敌卓,則界面只顯示布局界面慎式,不顯示數(shù)據(jù)。
- 如果該功能需要登錄,再彈出一個登錄用戶的窗口瘪吏。
- 錄入賬號密碼
- 點(diǎn)擊登錄
- 關(guān)閉登錄窗口癣防,并提示登錄成功
- 該功能界面重新加載數(shù)據(jù)
會話到期時要求登錄的操作流程:
- 會話到期情況下
- 當(dāng)打開頁面或操作界面
- 如果打開頁面的功能需要登錄用戶,則界面只顯示布局界面掌眠,不顯示數(shù)據(jù)蕾盯;如果操作界面的功能需要登錄用戶,則保持操作前的界面和數(shù)據(jù)狀態(tài)蓝丙。
- 再彈出一個登錄用戶的窗口
- 錄入賬號密碼
- 點(diǎn)擊登錄
- 關(guān)閉登錄窗口级遭,并提示登錄成功
- 如果是打開頁面要求登錄的,則打開的頁面重新加載數(shù)據(jù)渺尘;如果是操作界面要求登錄的挫鸽,不會自動重新操作,需要用戶自行重新操作沧烈。
在原框架中掠兄,會話到期,會關(guān)閉打開中的界面锌雀、或操作中的界面,這樣用戶原來操作的其它過濾操作迅诬、打開操作腋逆、選項(xiàng)卡等操作,就需要重新打開頁面侈贷,并重新操作一遍過濾惩歉、選項(xiàng)卡等操作。
保持會話狀態(tài):
- IIS重啟后俏蛮,用戶不應(yīng)該要重新登錄撑蚌,如果用戶正在操作中并提醒“系統(tǒng)中斷操作失敗”。
- 操作系統(tǒng)重啟后搏屑,用戶不應(yīng)該要重新登錄争涌,如果用戶正在操作中并提醒“系統(tǒng)中斷操作失敗”。
- 系統(tǒng)崩潰后辣恋,用戶不應(yīng)該要重新登錄亮垫,如果用戶正在操作中并提醒“系統(tǒng)中斷操作失敗”。
在原框架中伟骨,系統(tǒng)可能因?yàn)椴淮_定的原因饮潦,導(dǎo)致系統(tǒng)不間斷重啟,導(dǎo)致用戶經(jīng)常需要重新登錄携狭。
程序設(shè)計應(yīng)該多往程序有缺陷的情況下去考慮設(shè)計继蜡,有時程序很難做完美沒有任何問題。
會話期限、用戶登錄與App.Page.Check屬性的設(shè)置關(guān)系:
- 如果Check的值為None稀并,不檢查會話期限仅颇、用戶登錄,即界面操作不需要用戶登錄稻轨。
- 如果Check的值為All灵莲,需要檢查會話期限、用戶登錄殴俱,即界面操作需要用戶登錄政冻。
App.Page.Check屬性的詳細(xì)說明請看本文章節(jié)“App.Page.Check屬性”
記錄錯誤與顯示錯誤
指頁面程序流程中,程序出錯了把錯誤信息記錄下线欲,并提示用戶程序出錯明场。
指頁面程序流程中,程序出錯時:
- 把錯誤信息記錄下來李丰。
- 另外彈出窗口苦锨,提示用戶程序出錯,不應(yīng)該顯示錯誤的詳細(xì)信息趴泌,只需要顯示錯誤信息記錄的Id舟舒,以便于開發(fā)人員直接找到錯誤信息。
- 出錯的頁面應(yīng)該保留出錯前的樣子嗜憔,不應(yīng)該關(guān)閉頁面秃励。
在原框架中,出錯時只顯示出錯了吉捶,要自己去找這次錯誤對應(yīng)的大概時間的那條錯誤記錄夺鲜。
在原框架中,出錯時會顯示錯誤的詳細(xì)信息呐舔,會讓普通用戶去看一大串看不懂的詳細(xì)信息币励,那是只有專業(yè)的開發(fā)人員才看懂,而且這樣會提高用戶的出錯心理陰影珊拼。
在原框架中食呻,如果出錯了原頁面會關(guān)閉,這樣用戶原來操作的其它過濾操作杆麸、打開操作搁进、選項(xiàng)卡等操作,就需要重新打開頁面昔头,并重新操作一遍過濾饼问、選項(xiàng)卡等操作。
記錄操作
- 記錄哪個用戶在什么時間點(diǎn)打開哪個頁面揭斧。
- 記錄哪個用戶在什么時間點(diǎn)在界面上操作了什么莱革。
- 記錄操作有沒有執(zhí)行主業(yè)務(wù)邏輯的程序流程峻堰,如果執(zhí)行那大概執(zhí)到哪個流程中斷了。
如果用戶還沒登錄盅视,也需要記錄操作捐名,這樣可以了解用戶沒登錄的情況下操作了什么,記錄操作應(yīng)該更全面闹击,有助于調(diào)查操作信息更可靠镶蹋。
如果客戶沒有購買功能,也需要記錄操作赏半,這樣可以了解客戶是否對某個功能感興趣常常去點(diǎn)點(diǎn)看贺归,了解客戶的好奇行為信息,并且記錄操作應(yīng)該更全面断箫,有助于調(diào)查操作信息更可靠拂酣。
如果用戶沒有打開頁面的權(quán)限,也需要記錄操作仲义,記錄操作應(yīng)該更全面婶熬,有助于調(diào)查操作信息更可靠。
如果用戶沒有某項(xiàng)界面操作的權(quán)限埃撵,也需要記錄操作赵颅,記錄操作應(yīng)該更全面,有助于調(diào)查操作信息更可靠暂刘。
功能權(quán)限與用戶權(quán)限
功能未激活:
- 打開頁面
- 如果頁面的功能未激活性含,則關(guān)閉當(dāng)前頁面
- 提示用戶功能未購買激活,或未來可考慮設(shè)計成顯示購買界面鸳惯。
打開頁面時,功能未授權(quán):
- 打開頁面
- 如果用戶沒有功能的查看權(quán)限叠萍,則關(guān)閉當(dāng)前頁面
- 提示用戶功能未授權(quán)芝发。
操作界面時,功能未授權(quán):
- 操作界面
- 如果用戶有功能的操作權(quán)限苛谷,則取消執(zhí)行界面操作的業(yè)務(wù)邏輯程序
- 提示用戶功能未授權(quán)辅鲸。
功能權(quán)限、用戶權(quán)限腹殿、App.Page.Check屬性独悴、App.Page.FunctionId的設(shè)置關(guān)系:
- 如果Check的值為None時,不檢查功能權(quán)限锣尉、用戶權(quán)限刻炒。
- 如果Check的值為All時,需要檢查功能權(quán)限自沧、用戶權(quán)限坟奥。
App.Page.Check屬性的詳細(xì)說明請看本文章節(jié)“App.Page.Check屬性”
App.Page.FunctionId屬性的詳細(xì)說明請看本文章節(jié)“App.Page.FunctionId屬性”
語言
語言,如指軟件的英文版、繁體版爱谁、簡體版等晒喷。
判斷使用哪個語言的程序邏輯:
- 如果會話在有效期內(nèi),則讀取會話記錄中的語言數(shù)據(jù)访敌。
- 如果讀取會話記錄中的語言數(shù)據(jù)為null凉敲,則讀取會話記錄中的語言數(shù)據(jù)。
- 如果會話已超時寺旺,則讀取客戶端記錄中的語言數(shù)據(jù)爷抓。
- 如果讀取客戶端記錄中的語言數(shù)據(jù)為null,則使用默認(rèn)語言迅涮。
- 如果會話記錄不存在废赞,則讀取客戶端記錄中的語言數(shù)據(jù)。
- 如果客戶端記錄不存在叮姑,則提示“剛剛開發(fā)人員調(diào)試初始化客戶端唉地,操作被取消了,請重新操作传透≡耪樱”,并初始化客戶端記錄朱盐。
新框架語言與原框架語言的區(qū)別:
- 語言程序流程是優(yōu)先于主要業(yè)務(wù)邏輯的執(zhí)行群嗤,如果業(yè)務(wù)邏輯中有動態(tài)控件的生成,那么優(yōu)先執(zhí)行的語言程序流程就無法涉及到動態(tài)控件的語言控制了兵琳。因此狂秘,新框架中,語言程序流程放在了主業(yè)務(wù)邏輯的后面執(zhí)行躯肌。
界面風(fēng)格
界面風(fēng)格者春,如指軟件的藍(lán)色風(fēng)格、黑色風(fēng)格清女、白色風(fēng)格等钱烟。
判斷使用哪個界面風(fēng)格的程序邏輯:
- 如果會話在有效期內(nèi),則讀取會話記錄中的界面風(fēng)格數(shù)據(jù)嫡丙。
- 如果讀取會話記錄中的界面風(fēng)格數(shù)據(jù)為null拴袭,則讀取會話記錄中的界面風(fēng)格數(shù)據(jù)。
- 如果會話已超時曙博,則讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)拥刻。
- 如果讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)為null,則使用默認(rèn)界面風(fēng)格羊瘩。
- 如果會話記錄不存在泰佳,則讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)盼砍。
- 如果客戶端記錄不存在,則提示“剛剛開發(fā)人員調(diào)試初始化客戶端逝她,操作被取消了浇坐,請重新操作∏穑”近刘,并初始化客戶端記錄。
處理進(jìn)度
- 顯示處理進(jìn)度條時臀晃,用戶還可以操作其它界面處理其它事情觉渴。
- 可以同時處理多個事情,并顯示多個處理進(jìn)度條信息徽惋。
- 用戶通過進(jìn)度條可以主動中斷處理案淋。
- 用戶可以看到公共處理進(jìn)度信息,處定時的收集卡機(jī)數(shù)據(jù)的進(jìn)度险绘、自動化分析考勤的進(jìn)度信息等踢京。
- 用戶關(guān)閉瀏覽器后,不需要中斷處理進(jìn)度宦棺。
- 用戶重新登錄后瓣距,如果處理進(jìn)度還在進(jìn)行,則可以繼續(xù)看到處理進(jìn)度條代咸。
- 用戶可以看到其它用戶的處理進(jìn)度情況蹈丸,以便了解服務(wù)器的繁忙情況。
- 通過ProgressEntityService統(tǒng)一管理處理進(jìn)度信息呐芥,有利于更好的實(shí)現(xiàn)管理處理進(jìn)度功能逻杖。
新框架中,不再通過window.Progress = new Progress(……)思瘟,來控制進(jìn)度條信息弧腥,將統(tǒng)一使用ProgressEntityService代替。潮太。
異步
- 異步可以同時更新數(shù)據(jù),而不必一條條更新語句按順序執(zhí)行虾攻。
- 異步可以同時查數(shù)據(jù)铡买,而不必一條條查詢語句按順序執(zhí)行。
- 異步可以在等待硬盤IO操作的同時霎箍,處理其它事情奇钞。
- 異步不是多線程,多個異步操作同一個變量不存在數(shù)據(jù)計算偏差和線程安全問題漂坏,但多個線程操作同一個變量存在計算數(shù)據(jù)偏差和線程安全景埃。
- .aspx代碼文件媒至,需要在頂部的<%@Page %>中加上Async="true"設(shè)置,指示該頁面允許使用異步谷徙。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" Async="true" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
- .aspx.cs代碼文件拒啰,所有邏輯代碼需要寫在RegisterAsyncTask里。
using System;
using System.Web.UI;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(async () =>
{
//邏輯代碼
}));
}
protected void OnMyEvent()
{
RegisterAsyncTask(new PageAsyncTask(async () =>
{
//邏輯代碼
}));
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
RegisterAsyncTask(new PageAsyncTask(async () =>
{
//邏輯代碼
}));
}
}
App.Page.ClientId屬性
- 表示當(dāng)前使用端是哪個【客戶端】Id完慧∧钡可以通過ClientId獲取到【客戶端】的地理位置、IP地址屈尼、網(wǎng)卡物理地址册着、使用語言、界面風(fēng)格……等
- ClientId的有效期是2小時脾歧。
- 用戶端在線狀態(tài)時甲捏,每間隔1小時,由客戶端自行刷新有效期鞭执。
- ClientId使用時司顿,不需要判斷有效期是否在2小時內(nèi)。
- ClientId可由【客戶端】自行創(chuàng)建蚕冬,也可由【服務(wù)端】創(chuàng)建免猾。
- ClientId在有效期內(nèi)時:
- 重新打開瀏覽器時,保持ClientId
- 刷新瀏覽器時囤热,保持ClientId
- 重啟服務(wù)器時猎提,保持ClientId
- 使用時,保留ClientId
- ClientId超過有效期時:
- 重新打開瀏覽器時旁蔼,重新創(chuàng)建ClientId
- 刷新瀏覽器時锨苏,保持ClientId
- 重啟服務(wù)器時,保持ClientId
- 使用時棺聊,保留ClientId
有效期狀態(tài) | 重新打開瀏覽器 | 刷新瀏覽器 | 重啟服務(wù)器 | 使用時 |
---|---|---|---|---|
在有效期內(nèi) | 保持 | 保持 | 保持 | 保持 |
超過有效期 | 重新創(chuàng)建 | 保持 | 保持 | 保持 |
App.Page.SessionId屬性
- 表示當(dāng)前使用者的【會話】Id伞租,可以通過SessionId獲取到:登錄用戶Id、登錄用戶名限佩、客戶端Id葵诈、客戶端信息……等
- SessionId的有效期是2小時。
- 用戶端在線狀態(tài)時祟同,每間隔1小時作喘,由客戶端發(fā)送請求到服務(wù)端,自動刷新有效期晕城。
- SessionId使用時泞坦,需要判斷有效期是否在2小時內(nèi)。
- SessionId由【服務(wù)端】創(chuàng)建砖顷。
- SessionId在有效期內(nèi)時:
- 重新打開瀏覽器時贰锁,保持SessionId
- 刷新瀏覽器時赃梧,保持SessionId
- 重啟服務(wù)器時,保持SessionId
- 使用時豌熄,保持SessionId
- SessionId超過有效期時:
- 重新打開瀏覽器時授嘀,重新創(chuàng)建SessionId
- 刷新瀏覽器時,重新創(chuàng)建SessionId
- 重啟服務(wù)器時房轿,重新創(chuàng)建SessionId
- 使用時粤攒,重新創(chuàng)建SessionId
有效期狀態(tài) | 重新打開瀏覽器 | 刷新瀏覽器 | 重啟服務(wù)器 | 使用時 |
---|---|---|---|---|
在有效期內(nèi) | 保持 | 保持 | 保持 | 保持 |
超過有效期 | 重新創(chuàng)建 | 重新創(chuàng)建 | 重新創(chuàng)建 | 重新創(chuàng)建 |
App.Page.FunctionId屬性的使用說明
- 表示該【頁面】只屬于一個【功能】
- 如果App.Page.Check的值包含F(xiàn)unction,并且FunctionId有值時囱持,則頁面會檢查功能權(quán)限夯接。
- 如果App.Page.Check的值包含F(xiàn)unction | UserSession,并且FunctionId有值時纷妆,則頁面會檢查功能權(quán)限和用戶權(quán)限盔几。
- 如果App.Page.Check的值包含F(xiàn)unction時,F(xiàn)unctionId必需要有值掩幢,否則會報錯“FunctionId is required for checking”
- 如果App.Page.Check的值不包含F(xiàn)unction時逊拍,即使FunctionId有值,不會檢查功能權(quán)限和用戶權(quán)限际邻。
檢查項(xiàng) | Function | SessionUser |
---|---|---|
功能權(quán)限 | √ | - |
用戶權(quán)限 | √ | √ |
一個【頁面】也可以屬于多個【功能】芯丧,就需要其它處理方法了,可以把Check設(shè)置None世曾,自行實(shí)現(xiàn)檢查邏輯缨恒,就可以實(shí)現(xiàn)多個【功能】的檢查。
FunctionId相當(dāng)于在原框架中的GetWindowId()方法轮听,區(qū)別和優(yōu)點(diǎn):
- 區(qū)別1:GetWindowId是一個方法骗露,F(xiàn)unctionId是一個屬性。
- 區(qū)別2:GetWindowId方法的返回類型是整型血巍,F(xiàn)unctionId的屬性類型是一個分布式Id
- 區(qū)別3:GetWindowId不為null時萧锉,需要檢查功能權(quán)限和用戶權(quán)限。FunctionId不為null時述寡,不代表需要檢查功能權(quán)限和用戶權(quán)限柿隙。
- 優(yōu)點(diǎn)1:未來考慮多方合作商共同參與開發(fā),如果功能Id采用數(shù)字可能會常常發(fā)生重復(fù)沖突鲫凶,需要中心化集中維護(hù)功能Id优俘。如果果采用分布式Id,各自合作商自行生成Id即可掀序,互不干擾,去中心化各自維護(hù)功能Id惭婿。
- 優(yōu)點(diǎn)2:去中心化同樣方便于公司內(nèi)部開發(fā)人員使用不恭,內(nèi)部開發(fā)人員自行生成Id即可叶雹,互不干擾,去中心化各自維護(hù)功能Id换吧。
代碼示例:
public class MyPage : App.Page
{
protected internal override Id<FunctionEntity> FunctionId => new Id<FunctionEntity>("60244fff6545947758630631");
}
App.Page.WindowId屬性
- 指窗口的id
- 一個窗口會有一個訪問地址(Src)
- 一個窗口可以最大化折晦、最小化
- 一個窗口可以顯示坐標(biāo)
- WindowId必需要有值,如果WindowId為null沾瓦,則會報錯提示“WindowId異常满着,需要聯(lián)系軟件工程師處理”。
App.Page.Check屬性
- Check的值為All時贯莺,表示頁面是否需要檢查:會話期限风喇、用戶登錄、功能權(quán)限缕探、用戶權(quán)限
- Check的值為Function時魂莫,表示頁面只做功能權(quán)限檢查
- Check的值為Session時,表示頁面只做會話期限檢查
- Check的值為SessionUser時:
- 檢查會話期限
- 檢查用戶登錄
- Check的值為Function | SessionUser時:
- 檢查會話期限
- 檢查用戶登錄
- 檢查功能權(quán)限
- 檢查用戶權(quán)限
- Check的值為None時爹耗,表示頁面不做檢查耙考。
- Check的值可以為組合值,如:Function | Session
- Check的默認(rèn)值為None
- 如果Check的值為Function時潭兽,App.Page.FunctionId必需要有值倦始,否則會報錯“FunctionId is required for checking”
檢查項(xiàng) | Function | Session | SessionUser |
---|---|---|---|
會話期限 | - | √ | - |
用戶登錄 | - | - | √ |
功能權(quán)限 | √ | - | - |
用戶權(quán)限 | √ | - | √ |
如果需要自行編寫檢查邏輯,則把Check設(shè)置為None山卦。
.Net WebForm的內(nèi)置接口
.Net WebForm的內(nèi)置接口鞋邑,指 .net自帶的接口轧铁。
在新框架中守伸,以下內(nèi)置接口保持使用:
- Page_Load和OnLoad宵蕉,用于處理頁面數(shù)據(jù)的加載培漏。
- IsPostBack侦铜,用于表示頁面是否處于事件邏輯恶导。(目前暫時使用院水,后續(xù)應(yīng)該會改動入蛆,以更適合未來的前后端分離的開發(fā)模式)
- 控件的事件方法归敬,如:myBtn_OnClick(object sender, EventArgs e)
- OnPreRender酷含,用于設(shè)置控件的非持久狀態(tài)的數(shù)據(jù)。