2009-07-07 6 views
0

J'ai une classe client avec commentaires de propriété de chaîne et je suis en train de se lier comme ceci:Comment lier une propriété de classes à un TextBox?

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text=<%=customer.Comments %>> 
</asp:TextBox> 

Cependant, il me donne l'erreur:

balises Server ne peuvent pas contenir <% ... %> construit.

J'ai aussi une méthode dans la classe appelée GetCreatedDate et dans la page ASPX, je fais <% = GetCreatedDate()%> et <% GetCreatedDate();%>. Quelle est la différence?

Répondre

1

Sinon, vous pouvez définir la valeur dans l'événement Page_Load du fichier code-behind:

txtComments.Text = customer.Comments; 
0

vous devez utiliser "<% #%>" pour la liaison de données

<asp:TextBox ID="txtComments" 
      runat="server" 
      TextMode="MultiLine" Text="<%# customer.Comments %>"> 
</asp:TextBox> 
+0

curiosité, quelle est la différence entre # et = – Xaisoft

+1

"<% #" évalue une liaison de données lorsque la méthode DataBind est appelée "<% =" évalue lorsque la page est rendu et n'est pas pris en charge pour les attributs de contrôle serveur –

0

Essayez cette place.

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text=<%# customer.Comments %>> 
</asp:TextBox> 

Remarquez les = à #

+0

Quelle est la différence entre = et # – Xaisoft

+0

<% = est fondamentalement égal à Response.Write() alors que <% # est utilisé pour la liaison de données. – Brandon

+0

J'utilise = dans d'autres parties, est-il préférable d'utiliser # à la place? – Xaisoft

0

Utilisez la syntaxe DataBinding comme indiqué, <% client # .Commentaires%>. Cette syntaxe est uniquement évaluée lorsque TextBox est databound. Vous l'utiliseriez généralement dans une liste DataBound. Dans ce cas, vous devez numériser le contrôle manuellement. Remplacez la méthode OnDataBinding de la page et appelez txtComments.DataBind();

La syntaxe de liaison de données est le seul moyen de définir de manière déclarative les propriétés ServerControl à partir de la page ASPX. Le Response.Write de l'autre syntaxe se produit à un moment où les propriétés ServerControl ne sont pas accessibles. Si le contrôle ne se trouve pas dans un contrôle de base de données, vous devez le lier.

Si vous cherchez à rendre tous les déclaratifs dans votre page, vous ne gagnerez pas beaucoup à utiliser cette méthode, car vous devez toujours écrire du code dans le code derrière. Une alternative si vous souhaitez utiliser le contrôle TextBox seul sans contrôle DataBound parent serait de sous-classer le TextBox, ajouter une propriété AutoBind et dans l'appel de contrôle sous-classé, sa méthode DataBind si elle est true. Cela vous permettrait de lier les valeurs sans écrire de code de liaison de données dans le code derrière.

Vous pouvez également ajouter TextBox et d'autres contrôles de formulaire à un contrôle FormView et le lier à votre objet. Vous pouvez toujours utiliser la syntaxe DataBinding dans ce cas.

0

essayer cette

<asp:TextBox ID="txtComments" 
     runat="server" 
     TextMode="MultiLine" Text='<%# customer.Comments %>'> 
</asp:TextBox> 
Questions connexes