中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

泗洪县| 柳林县| 三原县| 宁河县| 如皋市| 西青区| 修水县| 晋城| 恩施市| 太原市| 资源县| 博客| 湖口县| 湘潭县| 保山市| 庆安县| 南溪县| 罗平县| 都兰县| 康保县| 台南县| 时尚| 三原县| 毕节市| 石嘴山市| 乌什县| 旬阳县| 遂溪县| 宁化县| 手游| 惠来县| 罗源县| 杭锦后旗| 林芝县| 溆浦县| 丹阳市| 三亚市| 东至县| 昌乐县| 延吉市| 邯郸县|