亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

万荣县| 阿荣旗| 丰宁| 万载县| 汝城县| 九江市| 颍上县| 游戏| 乐昌市| 盐城市| 蓝田县| 广德县| 子长县| 德庆县| 通州区| 怀远县| 茂名市| 綦江县| 玉田县| 江阴市| 鹰潭市| 齐齐哈尔市| 安仁县| 昌宁县| 兰坪| 石景山区| 怀来县| 元江| 海晏县| 湟源县| 永德县| 吉水县| 桐乡市| 水富县| 德安县| 石泉县| 获嘉县| 岢岚县| 永胜县| 邢台市| 正镶白旗|