伺服器控制項的學習 處理回發資料

2021-03-31 08:56:31 字數 2951 閱讀 2076

要使控制項能夠檢查客戶端發回的窗體資料,控制項必須實現system.web.ui.ipostbackdatahandler介面

public inte***ce ipostbackdatahandler

public function loadpostbackdata(postdatakey as string,postcollection as namevaluecollection) as boolean

public sub rainspostdatachangedevent()

end inte***ce

回發後,

頁框架在傳送的內容中搜尋與實現ipostbackdatahandler的伺服器控制項的uniqueid匹配的值。

然後,頁框架按順序在每個實現該介面的控制項上呼叫loadpostdata

loadpostdata的兩個引數是:

標識控制項的關鍵字以及包含傳送資料的集合namevaluecollection

通常實現loadpostdata,以便在回發後更新控制項的狀態。

如果控制項狀態因回發而更改,則 loadpostdata返回true;否則返回false

頁框架跟蹤所有返回true的控制項並在這些控制項上呼叫raisepostdatachangedevent

更改事件(如果有)就是從該方法引發的。

因此,回發資料處理分兩個階段進行,

即更新狀態和引發更改通知。

這可防止在載入回發資料過程中引發更改通知,

在該過程中,更改通知可能在各控制項載入回發資料之前錯誤地修改狀態。

htmltextwriterattribute是乙個列舉型別,用於將指定屬性寫入html元素的開始標記,比如標記的name,bgcolor,onclick,href等等

htmltextwritertag列舉:向htmltextwriter或html32textwriter物件輸出流的html標記,如img,a,td,tr,input等

用法如下

writer.addattribute(htmltextwriterattribute.alt, "encoding, ""required""", true)

writer.addattribute("myattribute", "no "encoding " required", false)

writer.renderbegintag(htmltextwritertag.img)

writer.renderendtag()

writer.writeline()

完整**如下:

option explicit

option strict

imports system

imports system.web

imports system.web.ui

imports system.collections.specialized

namespace customcontrols

public class mytextbox

inherits control

implements ipostbackdatahandler

public property text() as string

getreturn ctype(viewstate("text"), string)

end get

setviewstate("text") = value

end set

end property

public event textchanged as eventhandler

public overridable function loadpostdata(postdatakey as string, values as namevaluecollection) as boolean implements ipostbackdatahandler.loadpostdata

dim presentvalue as string = text

dim postedvalue as string = values(postdatakey)

if not presentvalue.equals(postedvalue) then

text = postedvalue

return true

end if

return false

end function

public overridable sub raisepostdatachangedevent() implements ipostbackdatahandler.raisepostdatachangedevent

ontextchanged(eventargs.empty)

end sub

protected overridable sub ontextchanged(e as eventargs)

raiseevent textchanged(me, e)

end sub

protected overrides sub render(output as htmltextwriter)

output.addattribute(htmltextwriterattribute.type, "text")

output.addattribute(htmltextwriterattribute.value, me.text)

output.addattribute(htmltextwriterattribute.name, me.uniqueid)

output.renderbegintag(htmltextwritertag.input)

output.renderendtag()

end sub

end class

end namespace

HTML伺服器控制項和WEB伺服器控制項的區別和聯絡

是html元素的一種演變,通過將html元素轉換為html伺服器控制項,也就是新增runat server 屬性,這樣就使得html元素元件可以在伺服器上以元件的方式出現了,並可以通過元件的方式對其程式設計去建立web頁面了 web 伺服器控制項同樣在伺服器建立,且需要 runat server 屬...

Web伺服器控制項和HTML伺服器控制項的總結

web 伺服器控制項比 html 伺服器控制項更豐富 更抽象。web 伺服器控制項在 asp.net 頁上有 asp 標記字首,例如 屬於 system.web.ui.webcontrols 命名空間的asp.net伺服器控制項。html 伺服器控制項 html server control 屬於 ...

伺服器控制項相關元資料Attribute

1.設計期attribute 設計期attribute對於控制項在視覺化設計器內正確執行是很重要的.設計器,屬性瀏覽器和其它的設計期元素使用由設計期attribute提供的元資料的作用如下 顯示屬性和事件 執行設計期的序列化 把用來實現設計期的功能的類與控制項或者屬性型別關聯起來 1.1 顯示屬性和...