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

前端 未结 4 2096
无人共我
无人共我 2020-12-31 13:00

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

相关标签:
4条回答
  • 2020-12-31 13:41

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

    0 讨论(0)
  • 2020-12-31 13:47

    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 <%= ... %>
    0 讨论(0)
  • 2020-12-31 13:47

    Try this:

    <%#String.Format("{0}?id={1}",FurtherReadingPage, Id)%>
    
    0 讨论(0)
  • 2020-12-31 14:02

    You can do it like this -

    <asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id")  %>' />
    
    0 讨论(0)
提交回复
热议问题