2008-08-30 5 views
1

Wie ordne ich die Ausgabe einer Methode einem Textfeldwert ohne Code zu?So weisen Sie die Ausgabe einer Methode einem Textboxwert ohne Code zu

<%@ Page Language="VB" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<script runat="server"> 
    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) 
    End Function 
</script> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title>Test Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <%=TextFromString%> 
     <br /> 
     <asp:TextBox ID="TextBox1" runat="server" Text="<%# TextFromString %>"></asp:TextBox> 
     <br /> 
     <%=TextFromMethod%> 
     <br /> 
     <asp:TextBox ID="TextBox2" runat="server" Text="<%# TextFromMethod %>"></asp:TextBox>   
    </div> 
    </form> 
</body> 
</html> 

es war meist so, dass die Designer Jungs es in der aspx-Seite verwenden könnten. Scheint wie eine einfache Sache, einen Variablenwert in eine Textbox zu schieben.

Es ist auch für mich verwirrend, warum

<asp:Label runat="server" ID="label1"><%=TextFromString%></asp:Label> 

und

<asp:TextBox ID="TextBox3" runat="server">Hello</asp:TextBox> 

funktioniert, aber

<asp:TextBox ID="TextBox4" runat="server"><%=TextFromString%></asp:TextBox> 

einen Übersetzungsfehler verursacht.

Antwort

2

Es gibt ein paar verschiedene Ausdruckstypen in .ASPX-Dateien. Es gibt:

<%= TextFromMethod %> 

, die einfach ein literales Steuerelement reserviert und den Text zum Zeitpunkt der Wiedergabe ausgibt.

und dann gibt es:

<%# TextFromMethod %> 

, die eine Datenbindung Ausdruck ist, ausgewertet, wenn der Steuerdatabound ist(). Es gibt auch Ausdruck Builder, wie:

<%$ ConnectionStrings:Database %> 

aber das ist nicht wirklich hier wichtig ....

Also, die <%= %> Methode funktioniert nicht, weil es ein Literal in die .Text Eigenschaft einzufügen versuchen würde, ... offensichtlich nicht was du willst.

Die <%# %> Methode funktioniert nicht, da die TextBox nicht DataBound ist, noch sind die Eltern davon betroffen. Wenn sich Ihre TextBox in einem Repeater oder einer GridView befand, würde diese Methode funktionieren.

Also - was tun? Ruf einfach TextBox.DataBind() an. Oder, wenn Sie mehr als 1 Kontrolle haben, rufen Sie einfach Page.DataBind() in Ihrem Page_Load.

Private Function Page_Load(sender as Object, e as EventArgs) 
    If Not IsPostback Then 
     Me.DataBind() 
    End If 
End Function 
1

Haben Sie versucht, ein HTML-Steuerelement anstelle der Serversteuerung zu verwenden? Führt es auch zu einem Kompilierungsfehler?

<input type="text" id="TextBox4" runat="server" value="<%=TextFromString%>" /> 
Verwandte Themen