溫馨提示×

溫馨提示×

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

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

ASP.NET中Bind和Eval的區(qū)別是什么

發(fā)布時間:2021-07-15 11:59:53 來源:億速云 閱讀:145 作者:chen 欄目:編程語言

這篇文章主要講解了“ASP.NET中Bind和Eval的區(qū)別是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ASP.NET中Bind和Eval的區(qū)別是什么”吧!

eval()方法在運(yùn)行時使用反射執(zhí)行后期綁定計算,因此與標(biāo)準(zhǔn)的asp.net數(shù)據(jù)綁定方法bind相比,會導(dǎo)致性能明顯下降。它一般用在綁定時需要格式化字符串的情況下。多數(shù)情況盡量少用此方法  

Eval 方法是靜態(tài)(只讀)方法,該方法采用數(shù)據(jù)字段的值作為參數(shù)并將其作為字符串返回。Bind 方法支持讀/寫功能,可以檢索數(shù)據(jù)綁定控件的值并將任何更改提交回數(shù)據(jù)庫。  

asp.net中的Bind和Eval:使用 Eval 方法

Eval 方法可計算數(shù)據(jù)綁定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期綁定數(shù)據(jù)表達(dá)式。在運(yùn)行時,Eval 方法調(diào)用 DataBinder 對象的 Eval 方法,同時引用命名容器的當(dāng)前數(shù)據(jù)項(xiàng)。命名容器通常是包含完整記錄的數(shù)據(jù)綁定控件的最小組成部分,如 GridView 控件中的一行。因此,只能對數(shù)據(jù)綁定控件的模板內(nèi)的綁定使用 Eval 方法。  

Eval 方法以數(shù)據(jù)字段的名稱作為參數(shù),從數(shù)據(jù)源的當(dāng)前記錄返回一個包含該字段值的字符串。可以提供第二個參數(shù)來指定返回字符串的格式,該參數(shù)為可選參數(shù)。字符串格式參數(shù)使用為 String 類的 Format 方法定義的語法。   

asp.net中的Bind和Eval:使用 Bind 方法

Bind 方法與 Eval 方法有一些相似之處,但也存在很大的差異。雖然可以像使用 Eval 方法一樣使用 Bind 方法來檢索數(shù)據(jù)綁定字段的值,但當(dāng)數(shù)據(jù)可以被修改時,還是要使用 Bind 方法。   

在 asp.net 中,數(shù)據(jù)綁定控件(如 GridView、DetailsView 和 FormView 控件)可自動使用數(shù)據(jù)源控件的更新、刪除和插入操作。例如,如果已為數(shù)據(jù)源控件定義了 SQL Select、Insert、Delete 和 Update 語句,則通過使用 GridView、DetailsView 或 FormView 控件模板中的 Bind 方法,就可以使控件從模板中的子控件中提取值,并將這些值傳遞給數(shù)據(jù)源控件。然后數(shù)據(jù)源控件將執(zhí)行適當(dāng)?shù)臄?shù)據(jù)庫命令。出于這個原因,在數(shù)據(jù)綁定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函數(shù)。   

Bind 方法通常與輸入控件一起使用,例如由編輯模式中的 GridView 行所呈現(xiàn)的 TextBox 控件。當(dāng)數(shù)據(jù)綁定控件將這些輸入控件作為自身呈現(xiàn)的一部分創(chuàng)建時,該方法便可提取輸入值。   

Bind 方法采用數(shù)據(jù)字段的名稱作為參數(shù),從而與綁定屬性關(guān)聯(lián),如下面的示例所示:  

< EditItemTemplate>      < table>      < tr>      < td align=right>      < b>Employee ID:< /b>      < /td>      < td>      < %# Eval("EmployeeID") %>      < /td>      < /tr>      < tr>      < td align=right>      < b>First Name:< /b>      < /td>      < td>      < asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"      Text='< %# Bind("FirstName") %>' />      < /td>      < /tr>      < tr>      < td align=right>      < b>Last Name:< /b>      < /td>      < td>      < asp:TextBox ID="EditLastNameTextBox" RunAt="Server"      Text='< %# Bind("LastName") %>' />      < /td>      < /tr>      < tr>      < td colspan="2">      < asp:LinkButton ID="UpdateButton" RunAt="server"      Text="Update" CommandName="Update" />           < asp:LinkButton ID="CancelUpdateButton" RunAt="server"      Text="Cancel" CommandName="Cancel" />      < /td>      < /tr>      < /table>      < /EditItemTemplate>

單擊行的 Update 按鈕時,使用 Bind 語法綁定的每個控件屬性值都會被提取出來,并傳遞給數(shù)據(jù)源控件以執(zhí)行更新操作。

asp.net中的Bind和Eval:使用 DataBinder.Eval

asp.net 提供了一個名為 DataBinder.Eval 的靜態(tài)方法,該方法計算后期綁定的數(shù)據(jù)綁定表達(dá)式,并將結(jié)果格式化為字符串(可選)。利用此方法,可以避免許多在將值強(qiáng)制為所需數(shù)據(jù)類型時必須執(zhí)行的顯式強(qiáng)制轉(zhuǎn)換操作。   

例如,在下面的代碼片段中,一個整數(shù)顯示為貨幣字符串。使用標(biāo)準(zhǔn)的 asp.net 數(shù)據(jù)綁定語法,必須首先強(qiáng)制轉(zhuǎn)換數(shù)據(jù)行的類型以便檢索數(shù)據(jù)字段 IntegerValue。然后,這將作為參數(shù)傳遞到 String.Format 方法:   

< %# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>

將此語法與 DataBinder.Eval 的語法進(jìn)行比較,后者只有三個參數(shù):數(shù)據(jù)項(xiàng)的命名容器、數(shù)據(jù)字段名稱和格式字符串。在模板化列表中(如 DataList 類、DataGrid 類或 Repeater 類),命名容器始終是 Container.DataItem。   

< %# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>

格式字符串參數(shù)是可選的。如果它被忽略,DataBinder.Eval 將返回類型對象的值,如下面的示例所示:     

< %# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>

當(dāng)對模板化列表中的控件進(jìn)行數(shù)據(jù)綁定時,DataBinder.Eval 特別有用,因?yàn)閿?shù)據(jù)行和數(shù)據(jù)字段通常都必須強(qiáng)制轉(zhuǎn)換。

感謝各位的閱讀,以上就是“ASP.NET中Bind和Eval的區(qū)別是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對ASP.NET中Bind和Eval的區(qū)別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI