agnieszka
agnieszka

Reputation: 15345

How to use c# code inside <% ... %> tags on asp.net page?

I'm writing an asp.net user control. It has a property, FurtherReadingPage, and two controls bound to it: ObjectDataSource and a Repeater. Inside the Repeater I would like to display a hyperlink with an href property set to something like FurtherReadingPage + "?id=" + Eval("Id"). I don't know how to do it inside the page's markup. I can use <% Eval("Id") %> or <% Response.Write(FurtherReadingPage + "?id=") %> alone but I don't know how to mix them.

Upvotes: 11

Views: 56846

Answers (4)

Keith
Keith

Reputation: 155632

You have a couple of different tags:

<% executes the code inside:

<% int id = int.Parse(Request["id"]); %> 

<%= writes out the code inside:

<%=id %> <!-- note no ; -->

<!-- this is shorthand for: -->
<% Response.Write(id); %> 

Both of these break up the normal flow when rendered on a page, for instance if you use them in a normal Asp.net <head runat="server"> you'll get problems.

<%# databinding:

<%# Eval("id") %>

This allows you to specify the bindings for controls that Asp.net WebForms render as a collection (rather than the literal controls that you can use <%= with), for instance:

<!-- this could be inside a repeater or another control -->
<asp:Hyperlink runat="server" ID="demo" 
     NavigateUrl="page.aspx?id=<%# Eval("id") %>" />

<%  //without this bind the <%# will be ignored
    void Page_Load( object sender, EventArgs e ) {
        demo.DataBind(); 
        //or
        repeaterWithManyLinks.DataBind(); 
    } 
%>

For your specific case you either:

  • Use a repeater and <%# Eval(...) %> with repeater.DataBind();

or

  • Use a foreach loop (<% foreach(... %>) with <%= ... %>

Upvotes: 25

Kirtan
Kirtan

Reputation: 21695

You can do it like this -

<asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id")  %>' />

Upvotes: 3

Saul Dolgin
Saul Dolgin

Reputation: 8804

Try this:

<%#String.Format("{0}?id={1}",FurtherReadingPage, Id)%>

Upvotes: 3

Sergio
Sergio

Reputation: 8259

Try this (example as link): <a href='<%=FurtherReadingPage %>?id=<%# Eval("Id") %>'>My link</a>

Upvotes: 1

Related Questions