91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET Eval如何進行數據綁定

發布時間:2021-07-24 10:12:09 來源:億速云 閱讀:304 作者:chen 欄目:開發技術

這篇文章主要介紹“ASP.NET Eval如何進行數據綁定”,在日常操作中,相信很多人在ASP.NET Eval如何進行數據綁定問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET Eval如何進行數據綁定”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

假設你已經了解ASP.NET Eval 1.1的數據綁定(特別是Container這個局部變量)的機制,這里主要分析ASP.NET Eval 2.0數據綁定做了那些改進.

ASP.NET Eval 2.0 的數據綁定函數Eval()簡化掉了ASP.NET Eval 1.1神秘的Container.DataItem,比如數據綁定表達式:

復制代碼 代碼如下:


<%# (Container.DataItem as DataRowView)["ProductName"].ToString() %>


ASP.NET Eval 1.1簡化為:(去掉了類型指定, Eval通過反射實現,本文不再闡述)

復制代碼 代碼如下:


<%# DataBinder.Eval(Container.DataItem, "ProductName").ToString() %>


ASP.NET Eval 2.0又簡化為,去掉了Container局部變量:

<%# Eval("ProductName") %>

那么,Page.Eval()又是如何知道"ProductName"是那個數據的屬性呢,即Container.DataItem真的消失了嗎?

ASP.NET Eval()是Page的父類TemplateControl的方法

TemplateControl.Eval()可以自動計算出Container, 機制就是從一個dataBindingContext:Stack堆棧來獲取.

1. 建立DataItem Container 棧:

在Control.DataBind()中,建立,這樣可以保證子控件的DataItem Container始終在棧頂.

復制代碼 代碼如下:


public class Control

{

protected virtual void DataBind(bool raiseOnDataBinding)

{

bool foundDataItem = false; if (this.IsBindingContainer)

{

object o = DataBinder.GetDataItem(this, out foundDataItem);

if (foundDataItem)

Page.PushDataItemContext(o); <-- 將DataItem壓入堆棧

}

try

{

if (raiseOnDataBinding)

OnDataBinding(EventArgs.Empty);

DataBindChildren(); <-- 綁定子控件

}

finally

{

if (foundDataItem)

Page.PopDataItemContext(); <-- 將DataItem彈出堆棧

}

}

}

2. 獲取DataItem Container

復制代碼 代碼如下:


public class Page

{

public object GetDataItem()

{

...

return this._dataBindingContext.Peek(); <-- 讀取堆棧頂部的DataItem Container,就是正在綁定的DataItem Container

}

}

3. TemplateControl.Eval()

復制代碼 代碼如下:


public class TemplateControl

{

protected string Eval (string expression, string format)

{

return DataBinder.Eval (Page.GetDataItem(), expression, format);

}

}

結論:

從上面看出Page.Eval()在計算的時候還是引用了Container.DataItem,只不過這個DataItem通過DataItem Container堆棧自動計算出來的.我認為Page.Eval()看似把問題簡化了,其實把問題搞得更加神秘.

到此,關于“ASP.NET Eval如何進行數據綁定”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎左旗| 荆门市| 沙湾县| 准格尔旗| 安徽省| 九台市| 镇沅| 大庆市| 习水县| 泽州县| 尼玛县| 山西省| 安义县| 衡东县| 海口市| 洛阳市| 资兴市| 镇平县| 济源市| 龙岩市| 定远县| 阜城县| 南岸区| 鹤壁市| 丹阳市| 乌审旗| 弥勒县| 灵宝市| 阳高县| 汉中市| 砀山县| 渭源县| 阳谷县| 清涧县| 哈尔滨市| 沁水县| 汨罗市| 壶关县| 宣城市| 德阳市| 鸡泽县|