四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

一句代碼實(shí)現(xiàn)批量數(shù)據(jù)綁定[下篇]

  《上篇》主要介紹如何通過DataBinder實(shí)現(xiàn)批量的數(shù)據(jù)綁定,以及如何解決常見的數(shù)據(jù)綁定問題,比如數(shù)據(jù)的格式化。接下來,我們主要來談?wù)凞ataBinder的設(shè)計(jì),看看它是如何做到將作為數(shù)據(jù)源實(shí)體的屬性值綁定到界面對(duì)應(yīng)的控件上的。此外,需要特別說明一點(diǎn):《上篇》中提供了DataBinder最初版本的下載,但已經(jīng)和本篇文章介紹的已經(jīng)大不一樣了。最新版本的主要解決兩個(gè)主要問題:通過Expression Tree的方式進(jìn)行屬性操作(屬性賦值和取值),添加了“數(shù)據(jù)捕捉”(Data Capture)的功能,以實(shí)現(xiàn)將控件中的值賦給指定的實(shí)體。但是,這并不意味著這就是一個(gè)最終版本,這里面依然有一些問題,比如對(duì)空值的處理不不夠全面,比如在進(jìn)行數(shù)據(jù)綁定的時(shí)候,有的控件類型需要進(jìn)行HTML Encoding,等等。[源代碼從這里下載]

目錄:
一、通過DataPropertyAttribute特性過濾實(shí)體的“數(shù)據(jù)屬性”
二、Control/DataSource映射的表示:BindingMapping
三、如何建立Control/DataSource映射集合
四、通過映射集合實(shí)現(xiàn)數(shù)據(jù)綁定
五、通過映射集合實(shí)現(xiàn)數(shù)據(jù)捕捉

  一、通過DataPropertyAttribute特性過濾實(shí)體的數(shù)據(jù)屬性

  DataBinder在進(jìn)行數(shù)據(jù)綁定的時(shí)候,并沒有對(duì)作為數(shù)據(jù)源的對(duì)象作任何限制,也就是說任何類型的對(duì)象均可作為數(shù)據(jù)綁定的數(shù)據(jù)源。控件(這里指TextBox、Label等這樣綁定標(biāo)量數(shù)值的控件)綁定值來源于數(shù)據(jù)源實(shí)體的某個(gè)屬性。但是一個(gè)類型的屬性可能有很多,我們需要某種篩選機(jī)制將我們需要的“數(shù)據(jù)屬性”提取出來。這里我們是通過在屬性上應(yīng)用DataPropertyAttribute一個(gè)特性來實(shí)現(xiàn)的。

  簡(jiǎn)單起見,我不曾為DataPropertyAttribute定義任何屬性成員。DataPropertyAttribute中定義了一個(gè)靜態(tài)的GetDataProperties方法,得到給定實(shí)體類型的所有數(shù)據(jù)屬性的名稱。但是為了避免頻繁地對(duì)相同實(shí)體類型進(jìn)行反射,該方法對(duì)得到的屬性名稱數(shù)組進(jìn)行了緩存。

[AttributeUsage( AttributeTargets.Property, AllowMultiple = false,Inherited = true)]
public class DataPropertyAttribute: Attribute
{
private static Dictionary<Type, string[]> dataProperties = new Dictionary<Type, string[]>();
public static string[] GetDataProperties(Type entityType)
{
Guard.ArgumentNotNullOrEmpty(entityType,
"entityType");
if (dataProperties.ContainsKey(entityType))
{
return dataProperties[entityType];
}
lock (typeof(DataPropertyAttribute))
{
if (dataProperties.ContainsKey(entityType))
{
return dataProperties[entityType];
}
var properties
= (from property in entityType.GetProperties()
where property.GetCustomAttributes(typeof(DataPropertyAttribute), true).Any()
select property.Name).ToArray();
dataProperties[entityType]
= properties;
return properties;
}
}
}

NET技術(shù)一句代碼實(shí)現(xiàn)批量數(shù)據(jù)綁定[下篇],轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 满天星 电视剧| 芜湖新闻| 民国往事电视剧演员表| 挖掘机儿童动画片| free xxxx japan| 日韩在线日韩| 三上数学思维导图简单又漂亮| 踢车帮| ★爱色★直播| 不得不爱吉他谱| 在线观看亚洲免费视频| 头像女可爱卡通| 木村多江| 爱来爱去微电视完整| 豪勇七蛟龙 电影| 体温单的绘制及图解| 师奶madam 电视剧| 内蒙古电视台雷蒙| 泰诺对乙酰氨基酚缓释片说明书| 好好操视频| 1—36集电视剧在线观看| 浙江卫视全天节目单| 根在中原| 痛风能吃豆腐吗| 无内女秘书| 口述公交车上| 九龙虫粪便的功效与吃法| 彭丹露点| 日本电车系列| 菊花开| 太太的情人电影| 美丽的坏女人中文字幕| 黄网站在线观看视频| 纳杰| 那些回不去的年少时光演员表| 鬼龙院花子的一生| 国家干部电视剧| 保镖1983| 在线免费污视频| 考死2:教学实习| 云月之恋简谱|