How do I assign a method's output to a textbox value without code behind?
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Public TextFromString As String = "test text test text"
Public TextFromMethod As String = RepeatChar("S", 50) 'SubSonic.Sugar.Web.GenerateLoremIpsum(400, "w")
Public Function RepeatChar(ByVal Input As String, ByVal Count As Integer)
Return New String(Input, Count)
<head id="Head1" runat="server">
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server" Text="<%# TextFromString %>"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" Text="<%# TextFromMethod %>"></asp:TextBox>
<asp:Label runat="server" ID="label1"><%=TextFromString%></asp:Label>
<asp:TextBox ID="TextBox3" runat="server">Hello</asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"><%=TextFromString%></asp:TextBox>
There's a couple of different expression types in .ASPX files. There's:
<%= TextFromMethod %>
which simply reserves a literal control, and outputs the text at render time.
and then there's:
<%# TextFromMethod %>
which is a databinding expression, evaluated when the control is DataBound(). There's also expression builders, like:
<%$ ConnectionStrings:Database %>
but that's not really important here....
<%= %> method won't work because it would try to insert a Literal into the .Text property...obviously, not what you want.
<%# %> method doesn't work because the TextBox isn't DataBound, nor are any of it's parents. If your TextBox was in a Repeater or GridView, then this method would work.
So - what to do? Just call
TextBox.DataBind() at some point. Or, if you have more than 1 control, just call
Page.DataBind() in your
Private Function Page_Load(sender as Object, e as EventArgs) If Not IsPostback Then Me.DataBind() End If End Function