要使控制項能夠檢查客戶端發回的窗體資料,控制項必須實現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 顯示屬性和...