VB.net标签使用会话变量

时间:2011-10-10 14:42:21

标签: asp.net vb.net session textbox label

我的vb.net应用程序需要使用会话变量。我真的不知道如何在ASP.net中使用它。我一直在尝试使用我的书籍,但我无法使用这个标签。我需要针对数据库验证用户输入,如果他们的代码在数据库中,文本框应该消失,并且会出现一个标签,上面写着欢迎。

我编写它的方式,我得到一个错误,说服务器标签没有很好地形成,并且在代码隐藏中它表示我的标签的ID没有声明。任何人都可以发现我写的代码有任何问题吗?

<asp:Label ID="lblIB" runat="server" DataSourceID="dsIBs" 
Text="Welcome, <%# Eval("First_Name") %> '&' <%# Eval("Last_Name")%>">
</asp:Label>


Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal 
  args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles
  CustomValidator1.ServerValidate
    args.IsValid = True
    For Each drv As DataRowView In dsIBs.[Select](DataSourceSelectArguments.Empty)
        If drv("baccount").ToString() = args.Value Then
            args.IsValid = False
            lblIB.Visible = False
            Exit For
        End If
    Next

    If args.IsValid Then
        IBTextBox.Visible = False
        IBTextBoxButton.Visible = False
        lblIB.Visible = True
    End If
End Sub

更新

<asp:Label ID="lblIB" runat="server" Text=""></asp:Label>

    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
    args.IsValid = True
    For Each drv As DataRowView In dsIBs.[Select](DataSourceSelectArguments.Empty)
        If drv("baccount").ToString() = args.Value Then
            args.IsValid = False
            lblIB.Visible = False
            Exit For
        End If
    Next

    If args.IsValid Then
        IBTextBox.Visible = False
        IBTextBoxButton.Visible = False
        lblIB.Visible = True
        lblIB.Text = String.Format("Welcome, {0} {1}", Session("FirstName"), Session("LastName"))

    End If
End Sub

更新2:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
    lblIB.Visible = False
End Sub


If args.IsValid Then
   IBTextBox.Visible = False
   IBTextBoxButton.Visible = False
   lblIB.Visible = True
   lblIB.Text = String.Format("Welcome, {0} {1}", Session("FirstName"),
   Session("LastName"))

    Protected Sub IBTextBoxButton_Click(ByVal sender As Object, ByVal e As 
    System.EventArgs) Handles IBTextBoxButton.Click
    Session("IB") = IBTextBox.Text
    Dim IB As String = Session("IB")
    Response.Redirect(Request.RawUrl + "&IB=" + Session("IB"))
End Sub

3 个答案:

答案 0 :(得分:2)

您的标记错误,因为Label控件没有DataSourceID属性,因此您应该将其删除:

<asp:Label ID="lblIB" runat="server" 
Text="Welcome, <%# Eval("First_Name") %> '&' <%# Eval("Last_Name")%>">
</asp:Label>

我还会删除Text属性中的Eval表达式(除非它位于数据绑定控件-gridview,etc-中)并保留为:

<asp:Label ID="lblIB" runat="server" 
Text="">
</asp:Label>

最后,您应该能够在服务器端执行验证,并以编程方式设置Text,例如:

lblIB.Text = "Welcome " + First_Name + " " + Last_Name

以某种方式从数据库中读取First_Name和Last_Name。

答案 1 :(得分:2)

如果您的服务器代码格式不正确,通常会导致引用出现问题。

解析器对您使用的引号感到困惑。

幸运的是,有一个简单的解决方案。

更改: -

Text="Welcome, <%# Eval("First_Name") %> '&' <%# Eval("Last_Name")%>">

要: -

Text='Welcome, <%# Eval("First_Name") %> &#145;&amp;&#146; <%# Eval("Last_Name")%>'>

首先,我们在文本周围加上单引号。这将有助于解析器识别引用文本的实际结束位置。

其次,我假设你实际上想要显示'&amp;',而不是用它来连接。就是这样: -

&#145;&amp;&#146;

如果您不需要,请删除。

最后,如果标签实际上不是数据绑定,那么什么都不会发生。您需要对标签进行数据绑定或使用稍微不同的引用语法。

在早期版本的VS中发出字符串的引用语法是: -

<%= %>

在.NET 4.0+中发出字符串的引用语法是

<%: %>

答案 2 :(得分:1)

由于Label不包含在数据绑定控件中,因此您无法使用数据绑定语法(即<%#)。在代码隐藏中设置Label的文本,或者像这样内联:

<asp:Label ID="Label1" runat="server" Text='<%=String.Format("{0} {1}", Session("FirstName"), Session("LastName"))%>' ... />

或者在代码隐藏中:

Label1.Text = String.Format("{0} {1}", Session("FirstName"), Session("LastName"))