在VB.net中绑定vs Eval,主要区别是什么

时间:2013-03-31 19:40:58

标签: asp.net vb.net

当我使用Eval时,没有语法错误

<asp:TextBox ID="txtHaulZoneCodeWIL" runat="server" CssClass="cagText" Text='<%#ConvertHaulZoneCodeForDisplay(Eval("HaulZoneCodeWIL").ToString())%>'></asp:TextBox>

当我在这个语句中使用Bind时,我收到错误“未声明Name Bind”

<asp:TextBox ID="txtHaulZoneCodeWIL" runat="server" CssClass="cagText" Text='<%#ConvertHaulZoneCodeForDisplay(Bind("HaulZoneCodeWIL").ToString())%>'></asp:TextBox>

如何解决这个问题。我想只使用Bind,而不是EVAL,因为Bind是双向的

在代码隐藏中我写的是这样的:

Protected Function ConvertHaulZoneCodeForDisplay(ByRef str As String) As String
        If str <> "0" Then
            Return str
        Else
            Return ""
        End If

    End Function

1 个答案:

答案 0 :(得分:0)

修改 试试这种方式

<asp:Label  ID="Label123" **Visible="False"** runat="server"  CssClass="cagText" Text='<%#ConvertHaulZoneCodeForDisplay(Bind("HaulZoneCodeWIL").ToString())%></asp:Label >


**<asp:TextBox ID="txtHaulZoneCodeWIL" runat="server" CssClass="cagText" %></asp:TextBox>**

看到这个.. Vb。代码

  Protected  Sub DetailsView1_DataBound(ByVal sender As Object, ByVal e As EventArgs)        
     Label lablehide=(Label) DetailsView1.FindControl("Label123")
     TextBox _txtHaulZoneCodeWIL=(TextBox) DetailsView1.FindControl("txtHaulZoneCodeWIL")
  **_txtHaulZoneCodeWIL.Text=ConvertHaulZoneCodeForDisplay(lablehide.Text)**

End Sub

这种方法错了。所以只需改变它

Protected Function ConvertHaulZoneCodeForDisplay(ByRef str As String) As String
        If str <> "0" Then
            Return str       

        End If
        Return ""
    End Function

然后请参考

Eval是单向绑定,但Bind是双向的

如果使用Eval绑定值,则它类似于只读。您只能查看数据。

如果使用Bind绑定值,并且如果对值进行某些更改,它也会反映在数据库上

你可以在这里看到类似的帖子

What is the difference between <%# Bind("") %> and <%# Eval("") %> in ASP.NET?