Comment attribuer la sortie d'une méthode à une valeur de zone de texte sans code derrière

StackOverflow https://stackoverflow.com/questions/36028

  •  09-06-2019
  •  | 
  •  

Question

Comment attribuer la sortie d'une méthode à une valeur de zone de texte sans code derrière ?

<%@ 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>

c'était surtout pour que les concepteurs puissent l'utiliser dans la page aspx.Cela me semble être une chose simple de pousser une valeur variable dans une zone de texte.

Je ne comprends pas non plus pourquoi

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

et

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

fonctionne mais

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

provoque une erreur de compilation.

Était-ce utile?

La solution

Il existe plusieurs types d'expression différents dans les fichiers .ASPX.Il y a :

<%= TextFromMethod %>

qui réserve simplement un contrôle littéral et affiche le texte au moment du rendu.

et puis il y a :

<%# TextFromMethod %>

qui est une expression de liaison de données, évaluée lorsque le contrôle est DataBound().Il existe également des générateurs d'expressions, tels que :

<%$ ConnectionStrings:Database %>

mais ce n'est pas vraiment important ici....

Alors le <%= %> La méthode ne fonctionnera pas car elle essaierait d'insérer un littéral dans la propriété .Text... évidemment, pas ce que vous voulez.

Le <%# %> La méthode ne fonctionne pas car la TextBox n'est pas DataBound, ni aucun de ses parents.Si votre TextBox était dans un Repeater ou un GridView, cette méthode fonctionnerait.

Alors que faire?Il suffit d'appeler TextBox.DataBind() à un moment donné.Ou, si vous avez plus d'un contrôle, appelez simplement Page.DataBind() dans ton Page_Load.

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

Autres conseils

Avez-vous essayé d'utiliser un contrôle HTML au lieu du contrôle serveur ?Est-ce que cela provoque également une erreur de compilation ?

<input type="text" id="TextBox4" runat="server" value="<%=TextFromString%>" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top