頁面程序流程(v1.1.2)

頁面程序流程

頁面程序啊犬,指與頁面相關(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)卡上爵憎。

登錄用戶的程序流程:

  1. 驗(yàn)證用戶賬號和密碼是否正確
  2. 把【用戶】的相關(guān)信息記錄在【會話】中
  3. 當(dāng)?shù)卿浀摹居脩簟恳延械卿浽诙鄠€地方的【會話】,則提示用戶是否退出該用戶正在使用的其它地方的【會話】婚瓜,并提醒該用戶其它地方的使用者:“有其它地方已登錄你的賬號”宝鼓。

在原框架中,同一個用戶不能同時登錄多個使用端巴刻、或多個瀏覽器愚铡、或多個瀏覽器上的選項(xiàng)卡。

在新框架中胡陪,不再做同時登錄同一用戶的限制沥寥。


主動登錄用戶的操作流程:

  1. 未登錄情況下
  2. 打開管理界面(Main.aspx)
  3. 點(diǎn)擊右上角登錄按鈕
  4. 彈出登錄窗口
  5. 錄入賬號密碼
  6. 點(diǎn)擊登錄
  7. 關(guān)閉登錄窗口,并提示登錄成功

在原框架中柠座,未登錄情況下邑雅,是不能直接打開主界面(Main.aspx)的,只能先打開登錄界面(Login.aspx)妈经。

在原框架中淮野,登錄入口有兩種,分別在登錄頁面(Login.aspx)狂塘、主界面(Main.aspx)使用過程中要求重新登錄時录煤。

而在新框架中,取消了使用登錄頁面的入口(Login.aspx)荞胡,保留了主界面的登錄入口妈踊,這樣做的好處是:

  • 有些功能可能不需要要求用戶登錄,這樣在主界面未登錄情況下直接打開即可泪漂。如:新聞公告廊营、活動公告、節(jié)假日公告等
  • 統(tǒng)一登錄界面的入口萝勤,使登錄入口只保留一種入口露筒。

打開功能時要求登錄的操作流程:

  1. 未登錄情況下
  2. 打開管理界面(Main.aspx)
  3. 點(diǎn)擊菜單欄的功能菜單項(xiàng)
  4. 彈出指定功能的窗口與頁面界面,如果該功能需要登錄敌卓,則界面只顯示布局界面慎式,不顯示數(shù)據(jù)。
  5. 如果該功能需要登錄,再彈出一個登錄用戶的窗口瘪吏。
  6. 錄入賬號密碼
  7. 點(diǎn)擊登錄
  8. 關(guān)閉登錄窗口癣防,并提示登錄成功
  9. 該功能界面重新加載數(shù)據(jù)

會話到期時要求登錄的操作流程:

  1. 會話到期情況下
  2. 當(dāng)打開頁面或操作界面
  3. 如果打開頁面的功能需要登錄用戶,則界面只顯示布局界面掌眠,不顯示數(shù)據(jù)蕾盯;如果操作界面的功能需要登錄用戶,則保持操作前的界面和數(shù)據(jù)狀態(tài)蓝丙。
  4. 再彈出一個登錄用戶的窗口
  5. 錄入賬號密碼
  6. 點(diǎn)擊登錄
  7. 關(guān)閉登錄窗口级遭,并提示登錄成功
  8. 如果是打開頁面要求登錄的,則打開的頁面重新加載數(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屬性”

記錄錯誤與顯示錯誤

指頁面程序流程中,程序出錯了把錯誤信息記錄下线欲,并提示用戶程序出錯明场。

指頁面程序流程中,程序出錯時:

  1. 把錯誤信息記錄下來李丰。
  2. 另外彈出窗口苦锨,提示用戶程序出錯,不應(yīng)該顯示錯誤的詳細(xì)信息趴泌,只需要顯示錯誤信息記錄的Id舟舒,以便于開發(fā)人員直接找到錯誤信息。
  3. 出錯的頁面應(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)限

功能未激活:

  1. 打開頁面
  2. 如果頁面的功能未激活性含,則關(guān)閉當(dāng)前頁面
  3. 提示用戶功能未購買激活,或未來可考慮設(shè)計成顯示購買界面鸳惯。

打開頁面時,功能未授權(quán):

  1. 打開頁面
  2. 如果用戶沒有功能的查看權(quán)限叠萍,則關(guān)閉當(dāng)前頁面
  3. 提示用戶功能未授權(quán)芝发。

操作界面時,功能未授權(quán):

  1. 操作界面
  2. 如果用戶有功能的操作權(quán)限苛谷,則取消執(zhí)行界面操作的業(yè)務(wù)邏輯程序
  3. 提示用戶功能未授權(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屬性”

語言

語言,如指軟件的英文版、繁體版爱谁、簡體版等晒喷。


判斷使用哪個語言的程序邏輯:

  1. 如果會話在有效期內(nèi),則讀取會話記錄中的語言數(shù)據(jù)访敌。
  2. 如果讀取會話記錄中的語言數(shù)據(jù)為null凉敲,則讀取會話記錄中的語言數(shù)據(jù)。
  3. 如果會話已超時寺旺,則讀取客戶端記錄中的語言數(shù)據(jù)爷抓。
  4. 如果讀取客戶端記錄中的語言數(shù)據(jù)為null,則使用默認(rèn)語言迅涮。
  5. 如果會話記錄不存在废赞,則讀取客戶端記錄中的語言數(shù)據(jù)。
  6. 如果客戶端記錄不存在叮姑,則提示“剛剛開發(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)格的程序邏輯:

  1. 如果會話在有效期內(nèi),則讀取會話記錄中的界面風(fēng)格數(shù)據(jù)嫡丙。
  2. 如果讀取會話記錄中的界面風(fēng)格數(shù)據(jù)為null拴袭,則讀取會話記錄中的界面風(fēng)格數(shù)據(jù)。
  3. 如果會話已超時曙博,則讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)拥刻。
  4. 如果讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)為null,則使用默認(rèn)界面風(fēng)格羊瘩。
  5. 如果會話記錄不存在泰佳,則讀取客戶端記錄中的界面風(fēng)格數(shù)據(jù)盼砍。
  6. 如果客戶端記錄不存在,則提示“剛剛開發(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ù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汪茧,一起剝皮案震驚了整個濱河市椅亚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舱污,老刑警劉巖呀舔,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扩灯,居然都是意外死亡媚赖,警方通過查閱死者的電腦和手機(jī)霜瘪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惧磺,“玉大人颖对,你說我怎么就攤上這事∧グ” “怎么了缤底?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長番捂。 經(jīng)常有香客問我个唧,道長,這世上最難降的妖魔是什么白嘁? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任坑鱼,我火速辦了婚禮,結(jié)果婚禮上絮缅,老公的妹妹穿的比我還像新娘鲁沥。我一直安慰自己,他們只是感情好耕魄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布画恰。 她就那樣靜靜地躺著,像睡著了一般吸奴。 火紅的嫁衣襯著肌膚如雪允扇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天则奥,我揣著相機(jī)與錄音考润,去河邊找鬼。 笑死读处,一個胖子當(dāng)著我的面吹牛糊治,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罚舱,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼井辜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了管闷?” 一聲冷哼從身側(cè)響起粥脚,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎包个,沒想到半個月后刷允,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年树灶,在試婚紗的時候發(fā)現(xiàn)自己被綠了搀菩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡破托,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出歧蒋,到底是詐尸還是另有隱情土砂,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布谜洽,位于F島的核電站萝映,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阐虚。R本人自食惡果不足惜序臂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望实束。 院中可真熱鬧奥秆,春花似錦、人聲如沸咸灿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽避矢。三九已至悼瘾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間审胸,已是汗流浹背亥宿。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砂沛,地道東北人烫扼。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像尺上,于是被迫代替她去往敵國和親材蛛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容