asp.net - ändern - wert in textbox schreiben




So ordnen Sie die Ausgabe einer Methode ohne Code hinter einem Textbox-Wert zu (2)

Haben Sie versucht, ein HTML-Steuerelement anstelle des Serversteuerelements zu verwenden? Verursacht es auch einen Zusammenstellungsfehler?

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

Wie weise ich die Ausgabe einer Methode einem Textbox-Wert ohne Code hinter 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 meistens so, dass die Designer-Typen es auf der aspx-Seite verwenden konnten. Es scheint eine einfache Sache zu sein, mir einen Variablenwert in eine Textbox zu schieben.

Es ist auch verwirrend für mich, 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>

verursacht einen Kompilierungsfehler.


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

<%= TextFromMethod %>

Das reserviert einfach ein literales Steuerelement und gibt den Text zur Renderzeit aus.

und dann gibt es:

<%# TextFromMethod %>

Dies ist ein Datenverbindungsausdruck, der ausgewertet wird, wenn das Steuerelement DataBound () ist. Es gibt auch Ausdrucksersteller, wie:

<%$ ConnectionStrings:Database %>

aber das ist nicht wirklich wichtig hier ....

Die <%= %> -Methode funktioniert also nicht, weil sie versuchen würde, ein Literal in die .Text-Eigenschaft einzufügen ... offensichtlich nicht das, was Sie wollen.

Die <%# %> -Methode funktioniert nicht, da die TextBox nicht DataBound ist und auch keine ihrer Eltern ist. Wenn sich Ihr TextBox in einem Repeater oder einer GridView befand, würde diese Methode funktionieren.

Also - was tun? Rufen TextBox.DataBind() einfach TextBox.DataBind() irgendwann auf. Wenn Sie mehr als ein Steuerelement haben, rufen Page.DataBind() 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




vb.net