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

溫馨提示×

溫馨提示×

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

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

ASP.NET 中怎么利用Eval實現數據綁定

發布時間:2021-07-16 14:42:34 來源:億速云 閱讀:125 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關ASP.NET 中怎么利用Eval實現數據綁定,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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);    }  }

以上就是ASP.NET 中怎么利用Eval實現數據綁定,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

绵阳市| 治县。| 武夷山市| 玉屏| 凌海市| 甘肃省| 独山县| 金门县| 黔西| 盖州市| 休宁县| 会东县| 邳州市| 泾阳县| 威宁| 通州区| 靖安县| 岢岚县| 许昌市| 阳春市| 台中县| 麟游县| 临夏县| 宣恩县| 宁化县| 承德县| 密云县| 古蔺县| 神农架林区| 宜兰市| 肥城市| 蛟河市| 长武县| 沂南县| 曲麻莱县| 江达县| 新民市| 大邑县| 芜湖市| 贡嘎县| 民勤县|