views:

5777

answers:

3

What is the syntax to concatenate text into a binding expression for an asp.net webpage (aspx).

For example if I had a hyperlink that was being bound like this:

<asp:HyperLink id="lnkID" NavigateUrl='<%# Bind("Link") %>' Target="_blank" 
                        Text="View" runat="server"/>

How do you change, say, the Text to concatenate a bound value with a string? Variations like this aren't quite right.

Text='<%# Bind("ID") + " View" %>'

neither does

Text='<%# String.Concat(Bind("ID"), " View") %>'
+2  A: 

I have used String.Format("{0}{1}"... before to good effect.

Andrew Rollings
+4  A: 

Use Eval instead.

Text='<%# Eval("ID", "{0} View") %>'

Eval is also better if the value is not going to be updated, where Bind allows two way data binding.

TheImirOfGroofunkistan
For this question, Eval is correct since there's no point in doing two-way databinding in the NavigateUrl property
John Sheehan
+2  A: 

You can also place the "concatenation" in the text portion of a tag if using a template field:

<asp:TemplateField HeaderText="Name" SortExpression="sortName">
<ItemTemplate>
   <asp:LinkButton ID="lbName" runat="server" OnClick="lbName_Click" CommandArgument='<%# Eval("ID") %>'>
   <%--Enter any text / eval bindind you want between the tags--%>
   <%# Eval("Name") %> (<%# Eval("ID") %>)
   </asp:LinkButton>
</ItemTemplate>

This results in output like:

Name (ID)

inside of the template column.

TheImirOfGroofunkistan