Bind 與 Eval 的用法與區別

2022-03-12 04:36:10 字數 2535 閱讀 9418

' />

' />

eval和bind的區別

簡單來說:

繫結表示式

<%# eval("欄位名") %>

<%# bind("欄位名") %>

1、eval 單向繫結:資料是唯讀的

bind 雙向繫結:資料可以更改,並返回伺服器端,伺服器可以處理更改後的資料,如存入資料庫.

2.當對次表示式操作時候,必須用eval 如<%# eval("欄位名").tostring().trim() %>

3、繫結控制項的屬性時要用bind,而eval則是其它一些。

例如:' />

例如:<%# eval("productid") %>

詳細來說:

eval()方法在執行時使用反射執行後期繫結計算,因此與標準的asp.net資料繫結方法bind相比,會導致效能明顯下降。它一般用在繫結時需要格式化字串的情況下。多數情況盡量少用此方法

eval 方法是靜態(唯讀)方法,該方法採用資料字段的值作為引數並將其作為字串返回。bind 方法支援讀/寫功能,可以檢索資料繫結控制項的值並將任何更改提交回資料庫。

使用 eval 方法

eval 方法可計算資料繫結控制項(如 gridview、detailsview 和 formview 控制項)的模板中的後期繫結資料表示式。在執行時,eval 方法呼叫 databinder 物件的 eval 方法,同時引用命名容器的當前資料項。命名容器通常是包含完整記錄的資料繫結控制項的最小組成部分,如 gridview 控制項中的一行。因此,只能對資料繫結控制項的模板內的繫結使用 eval 方法。

eval 方法以資料字段的名稱作為引數,從資料來源的當前記錄返回乙個包含該字段值的字串。可以提供第二個引數來指定返回字串的格式,該引數為可選引數。字串格式引數使用為 string 類的 format 方法定義的語法。

使用 bind 方法

bind 方法與 eval 方法有一些相似之處,但也存在很大的差異。雖然可以像使用 eval 方法一樣使用 bind 方法來檢索資料繫結欄位的值,但當資料可以被修改時,還是要使用 bind 方法。  

在 asp.net 中,資料繫結控制項(如 gridview、detailsview 和 formview 控制項)可自動使用資料來源控制項的更新、刪除和插入操作。例如,如果已為資料來源控制項定義了 sql select、insert、delete 和 update 語句,則通過使用 gridview、detailsview 或 formview 控制項模板中的 bind 方法,就可以使控制項從模板中的子控制項中提取值,並將這些值傳遞給資料來源控制項。然後資料來源控制項將執行適當的資料庫命令。出於這個原因,在資料繫結控制項的 edititemtemplate 或 insertitemtemplate 中要使用 bind 函式。

bind 方法通常與輸入控制項一起使用,例如由編輯模式中的 gridview 行所呈現的 textbox 控制項。當資料繫結控制項將這些輸入控制項作為自身呈現的一部分建立時,該方法便可提取輸入值。  

bind 方法採用資料字段的名稱作為引數,從而與繫結屬性關聯,如下面的示例所示:

employee id:

<%# eval("employeeid") %>

first name:

' />

last name:

'  />

單擊行的 update 按鈕時,使用 bind 語法繫結的每個控制項屬性值都會被提取出來,並傳遞給資料來源控制項以執行更新操作。

使用 databinder.eval

asp.net 提供了乙個名為 databinder.eval 的靜態方法,該方法計算後期繫結的資料繫結表示式,並將結果格式化為字串(可選)。利用此方法,可以避免許多在將值強制為所需資料型別時必須執行的顯式強制轉換操作。

例如,在下面的**片段中,乙個整數顯示為貨幣字串。使用標準的 asp.net 資料繫結語法,必須首先強制轉換資料行的型別以便檢索資料字段 integervalue。然後,這將作為引數傳遞到 string.format 方法:

<%# string.format("", ((datarowview)container.dataitem)["integervalue"]) %>

將此語法與 databinder.eval 的語法進行比較,後者只有三個引數:資料項的命名容器、資料欄位名稱和格式字串。在模板化列表中(如 datalist 類、datagrid 類或 repeater 類),命名容器始終是 container.dataitem。

<%# databinder.eval(container.dataitem, "integervalue", "") %>

格式字串引數是可選的。如果它被忽略,databinder.eval 將返回型別物件的值,如下面的示例所示:

<%# (bool)databinder.eval(container.dataitem, "boolvalue") %>

當對模板化列表中的控制項進行資料繫結時,databinder.eval 特別有用,因為資料行和資料字段通常都必須強制轉換。

bind和eval的區別

eval 方法 在執行時使用反射執行後期繫結計算,因此與標準的asp.net資料繫結方法bind相比,會導致效能明顯下降。它一般用在繫結時需要格式化字串的情況下。多數情況盡量少用此方法 eval 方法是靜態 唯讀 方法,該方法採用資料字段的值作為引數並將其作為字串返回。bind 方法支援讀 寫功能,...

call ,apply 和 bind的用法與區別

作用都是一樣的,官方解釋 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件 簡單來說就是改變當前使用該方法的物件中的this指向 var xw var xh xw.say.call xh 小紅,女,今年12 小紅,女,今年12 xw.say.bind xh function var xh xw.sa...

Bind和Eval的區別詳解

bind和eval的區別詳解 1.簡單描述eval和bind的區別 繫結表示式 eval 欄位名 bind 欄位名 區別 1.eval是唯讀資料,bind是可更新的 2.當對次表示式操作時候,必須用eval 如 eval 欄位名 tostring trim 2.若gridview中繫結列裡面 設定 ...