999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

.NET中變量綁定方法面面觀

2012-04-13 17:22:14

葛 世 強

(蘭州職業技術學院 信息工程系,蘭州 730070)

在.NET編程中經常會碰到在前臺代碼中要使用或綁定后臺代碼中變量值的問題。一般有<%= str%>和<%# str %>兩種方式。前臺即通常的.aspx文件,后臺指的是與aspx相關聯的CodeBehind,文件后綴名為.aspx.cs。一般來說,在前臺代碼的三種位置可能會綁定后臺變量:

(1)服務器端控件屬性或HTML標簽屬性;

(2)JavaScript代碼中;

(3)Html顯示內容的位置。

1 服務器端控件屬性或HTML標簽屬性中綁定后臺變量

服務器端控件屬性或HTML標簽屬性中綁定后臺變量需要注意:

(1)要綁定的控件或標簽一般的屬性要求是字符串型或數值型;

(2)并不是所有的屬性都可以綁定變量,有些屬性例如runat屬性必須是“server”常量,即使綁定的字符串是server,也會導致分析器分析時出錯;

(3)某些屬性要求屬性值有約束(類型約束,比如服務器端控件要求TabIndex屬性是short類型,或者字符串內容有約束),也應該在綁定時滿足,否則依然可能編譯時報錯;

(4)雖然屬性本身有約束,但即使綁定的變量不滿足約束,也可以編譯通過,比如input的checked屬性,它只有checked字符串是合法的,但如果通過綁定獲取到的字符串不是checked,那么這些屬性將有自己內部處理機制,來保證可以正常使用;

(5)即使對于同一類屬性,服務器端和HTML的屬性的處理機制也不同,同樣是TabIndex(tabIndex),前者如果不滿足,則分析器錯誤,后者則忽略這一問題。

2 JavaScript代碼中綁定后臺變量

JavaScript代碼中綁定后臺變量只要注意綁定的后臺變量和JavaScript中數據類型兼容即可。

3 Html顯示內容綁定后臺變量

如果綁定出現的位置不在服務器端控件內部,則沒有約束條件,只要是常量字符串可以出現的位置,均可以綁定。但是對于置于服務器端控件內部,則有約束條件。此類控件可以歸納為四類服務器端控件,如果綁定的代碼出現在這些控件的開始和結束標簽之間則有不同的顯示結果。

3.1 約束型控件

這類控件要求它的開始標簽和結束標簽中只能包含指定的子控件,因此如果在這里出現代碼塊,將編譯錯誤。例如:在它之間,要求必須嵌套。

3.2 非嵌套類控件

該類控件不允許在內部嵌套其他控件或標簽,只能是常量字符串,它會將開始標簽和結束標簽中常量字符串內容作為它的屬性。例如TextBox就會將標簽間內容作為它的Text屬性值。

3.3 嵌套類控件

這類控件可以嵌套其他任意控件,也可以包含字符串,因此可以正常顯示綁定代碼塊所表示的字符串內容。例如Label控件、Panel控件等。

3.4 數據綁定類控件

此類控件是ASP.NET提供的服務器端控件,除了可以綁定普通的變量類型,也可以綁定一個數據集合。

4 后臺變量的要求與約束

后臺變量是泛指的:成員變量、方法或屬性的返回值、表達式和數據集合。后臺變量需要滿足兩個方面的要求:

4.1 變量修飾符要求

變量是靜態或者實例字段均可。對于代碼隱藏模式的ASP.NET,以上所述的變量必須為public或protected類型(因為是基類與派生類的關系),private或者internal都不行,而代碼嵌入模式則任何修飾符的變量均可訪問(一個類內部的關系)。

4.2 變量類型要求

由于前臺屬性一般是字符串類型,而JavaScript基本類型也就是字符串型、數字型、布爾型,因此對應的變量應該也是這幾種方式,其余類型如果不被支持(如復雜類型、數組、引用類型等),前臺獲取的就是調用了變量的ToString()方法所得到的字符串。因此,在綁定時,要根據情況看是否能進行隱式類型轉換,必要時還要用相關函數來強制轉換,以保證前臺可以獲得正確的值。當然,對于數據綁定類控件,它的有些屬性可以為數據集合,但這時的綁定只能通過特定的方式才被支持。

5 綁定后臺變量的方式

5.1 <%= ……%>方式綁定后臺變量

此種方式在ASP中就開始使用了。ASP通過包含在< % 和 %>中的表達式將執行結果輸出到客戶瀏覽器,如:< % =now() %>就是將當前時間的值發送到客戶瀏覽器中。在ASP.NET中,這個表達式依然可以使用,并可以應用于前臺代碼的服務器端控件屬性或HTML標簽屬性、JavaScript代碼中、Html顯示內容的位置三種情況,但是要注意,除了上述的一般性約束外,對于控件屬性,還必須是綁定到非服務器端控件的屬性。另外,它只能綁定上面講的成員變量、方法或屬性的返回值和表達式這三種變量類型,不支持綁定數據集合。

5.2 <%# …… %>方式綁定后臺變量

該方式是在.aspx頁中使用數據綁定的基礎,所有數據綁定表達式都必須包含在這些字符中。

(1)從可以使用的范圍來看,除了能出現在服務器端控件屬性或HTML標簽屬性、JavaScript代碼中、Html顯示內容外,還可以出現在服務器端控件的屬性中。

(2)從綁定的變量類型上看,還可以配合ASP.NET的數據綁定類控件,來綁定數據集合。如:ArrayList(數組),Hashtable(哈稀表,DataView(數據視圖)),DataReader等。

(3)從用法上看,在前臺代碼中除了在相應位置寫上<%# %>外,在后臺代碼中,還需要調用DataBind方法。只有執行了相應控件的DataBind方法,前臺代碼中這些控件中使用<%# %>的綁定才會發生,否則的話將不會被賦值,而是默認空值。

6 結論

兩種綁定方式上約束基本相同,都要求與屬性匹配即可將數據顯示在預期顯示的位置。<%# …… %>的使用位置更廣泛,尤其是支持服務器端控件和綁定數據集合。后臺代碼方面,<%# …… %>需要調用DataBind才能完成綁定,<%= ……%>則沒有這方面要求。

兩者在執行機制上的區別:<%= ……%>是在程序執行時調用(應該是在頁面的RenderControl事件過程中完成的,也就是通常情況下我們可以看到的后臺代碼都執行完畢后再去到前臺代碼中進行賦值綁定);而<%# ……%>是在DataBind()方法之后被調用,一旦調用了DataBind(),則它對應的控件將綁定變量。

參考文獻:

[1]邵珠貴,楊惠英.關于ASP.NET網頁間數據共享的研究[J].吉林廣播電視大學學報,2012,(1).

[2]劉偉,蔡晉強.基于ASP.NET數據綁定控件的應用[J].電腦開發與應用,2010,(9).

[3]陳志堅.ASP.NET數據綁定技術的分析與研究[J].福建電腦,2010,(7).

[4]劉永艷,劉敦敏.淺談ASP.NET數據的綁定[J].電腦編程技巧與維護,2009,(10).

主站蜘蛛池模板: 91po国产在线精品免费观看| 日韩免费毛片视频| 国语少妇高潮| 国产成人精品在线1区| 亚洲天堂在线视频| 福利国产微拍广场一区视频在线| 国产欧美另类| 国产精品无码一二三视频| 中日韩欧亚无码视频| 亚洲精品天堂在线观看| 黄色三级网站免费| julia中文字幕久久亚洲| 午夜精品久久久久久久无码软件 | 九九九九热精品视频| 热久久这里是精品6免费观看| 一级毛片免费播放视频| 成人欧美日韩| 亚洲天天更新| 日韩黄色大片免费看| 欧美影院久久| 国产一区二区网站| 71pao成人国产永久免费视频 | 香蕉eeww99国产精选播放| 色妞www精品视频一级下载| 亚洲第一中文字幕| 欧美精品亚洲精品日韩专区va| 国产精品福利尤物youwu| 久久国产精品嫖妓| 青青草国产一区二区三区| www.亚洲天堂| 2020国产精品视频| 精品福利网| 伊人久久久大香线蕉综合直播| 免费福利视频网站| 亚洲中字无码AV电影在线观看| 亚洲AⅤ无码日韩AV无码网站| 日韩国产精品无码一区二区三区| 免费精品一区二区h| 萌白酱国产一区二区| 亚洲欧美另类中文字幕| 亚洲人成网站18禁动漫无码| 成人久久18免费网站| 欧美专区在线观看| 久久国产精品国产自线拍| 麻豆精品在线| 亚洲欧美综合另类图片小说区| 国内精品一区二区在线观看| 国产在线观看91精品亚瑟| 国产网站免费| 亚洲人成成无码网WWW| 色欲综合久久中文字幕网| 午夜毛片福利| 亚洲天堂视频在线免费观看| 波多野结衣的av一区二区三区| 国产精品第页| 99精品在线视频观看| 又粗又硬又大又爽免费视频播放| 99re在线免费视频| 国产毛片高清一级国语| 伊人久综合| 亚洲综合中文字幕国产精品欧美 | 欧美精品另类| 视频二区欧美| 日韩av手机在线| www成人国产在线观看网站| 亚洲AⅤ波多系列中文字幕| 久久久久久国产精品mv| 欧美成人看片一区二区三区| 波多野结衣一区二区三区四区| 亚洲无码A视频在线| 91偷拍一区| 欧美不卡视频一区发布| 国内毛片视频| 波多野结衣一区二区三区AV| 国产一区成人| 91国内视频在线观看| 欧美性色综合网| 亚洲视频在线青青| 国产在线欧美| 欧美性色综合网| 人妻夜夜爽天天爽| 日本精品中文字幕在线不卡|