2017年5月7日 星期日

[ASP.NET] Page事件發生先後順序

PreInit 事件:執行預先初始化的工作,在ASP.NET 2.0中,若要動態調整主版頁面 (Master Page)、佈景主題 (Theme) 時,要在這個事件中調整。
Init 事件:執行初始化工作。
InitCompleted 事件:在完成初始化工作後引發。
Preload 事件:執行預先載入的工作。
Load 事件:執行載入的工作,大多數的網頁都擁有 Page_Load 事件處理常式,使用者控制項 (user control) 中也有 Page_Load 事件常式,都會在此時呼叫。
控制項的 PostBack 變更通知:當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息通知的事件。
控制項的 PostBack 相關事件:當網頁偵測到是 PostBack 要求時,會引發 PostBack 訊息指定的控制項的事件。
LoadCompleted 事件:執行載入完成後的工作。
PreRender 事件:處理在產生 HTML 結果前的工作。
SaveStateCompleted 事件:處理頁面狀態(ViewState 與 ControlState)儲存完成後的事件。
Render 事件:處理產生 HTML 的工作。
Unload 事件:處理結束網頁處理時的工作。

沒有使用 Master Page 情況下:
Page.PreInit
Page.Init
Page.InitComplete
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

使用了 MasterPage 情況, MasterPage 與 ContentPage 事件順序:
ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplete
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender

ContentPage.PreRenderComplete

2017年3月7日 星期二

ASP功能參考網站

動態加入GridView
http://www.allenkuo.com/genericarticle/view1374.aspx

在 DataList Web 伺服器控制項中動態建立樣板本
https://msdn.microsoft.com/zh-tw/library/6d5z5yty(VS.80).aspx

2016年12月21日 星期三

ASP.NET 如何取得 Request URL (路徑)的各個部分

我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷。例如說 "http://localhost:1897/News/Press/Content.aspx/123?id=1#toc",我們想要取得網址裡第一層目錄的名字(News)用以判斷不同的頁面標題(Page Title)。
我看很多人都用字串的 IndexOf 方法與 Substring 方法:
[code:c#]
Request.Url.PathAndQuery.Substring(1, Request.Url.PathAndQuery.IndexOf("/", 1)-1)
[/code]
這實在太埋沒 .NET 的強大設計了,事實上在 Request 物件就已經提供很多方便的屬性(Property)可供取得網址的片段。
底下這張表就是各種跟 Browser Request 的網址相關的屬性與用法:

網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc
Request.ApplicationPath/
Request.PhysicalPathD:\Projects\Solution\web\News\Press\Content.aspx
System.IO.Path.GetDirectoryName(Request.PhysicalPath)D:\Projects\Solution\web\News\Press
Request.PhysicalApplicationPathD:\Projects\Solution\web\
System.IO.Path.GetFileName(Request.PhysicalPath)Content.aspx
Request.CurrentExecutionFilePath/News/Press/Content.aspx
Request.FilePath/News/Press/Content.aspx
Request.Path/News/Press/Content.aspx/123
Request.RawUrl/News/Press/Content.aspx/123?id=1
Request.Url.AbsolutePath/News/Press/Content.aspx/123
Request.Url.AbsoluteUrihttp://localhost:1897/News/Press/Content.aspx/123?id=1
Request.Url.Schemehttp
Request.Url.Hostlocalhost
Request.Url.Port1897
Request.Url.Authoritylocalhost:1897
Request.Url.LocalPath/News/Press/Content.aspx/123
Request.PathInfo/123
Request.Url.PathAndQuery/News/Press/Content.aspx/123?id=1
Request.Url.Query?id=1
Request.Url.Fragment
Request.Url.Segments/
News/
Press/
Content.aspx/
123

2016年11月24日 星期四

草稿

文字方塊 輸入及時轉大寫
1.JavaScript方法:(缺點:在輸入時會先看到小寫)
<input size="30" onKeyup="this.value=this.value.toUpperCase()">

2.CSS方法:
<input size="30" style="text-transform:uppercase;" >

2016年8月15日 星期一

ASP

在ASP中 繫結資料 + Session 或其他

Text='<%# session("p_uploadUrl") + Container.DataItem %>'
Text='<%# "~" + Eval("URL") %>'

2016年8月14日 星期日

Button not firing inside Accordion Panes inside which is inside Update Panel in ASP.NET

 UpdatePanel下使用(Accordion/AccordionPane)<--AJAX開合

在AccordionPane下的Button無法Work

Answer:
在Page_Load中加入:
ScriptManager.GetCurrent(Me.Page).RegisterPostBackControl(but_fileUpload_Img)

如果是在MasterPage下請改用:
ScriptManager.GetCurrent(Me.Master.Page).RegisterPostBackControl(but_fileUpload_Img)

參考:http://stackoverflow.com/questions/27815108/button-not-firing-inside-accordion-panes-inside-which-is-inside-update-panel-in

2016年8月4日 星期四

App_Code

App_Code如何使用
session() 改為 HttpContext.Current.Session("xxx")

Application() 改為 HttpContext.Current.Application("xxx")