Использование Eval() в HyperLink

Дата: 22.02.2010
Категории: ASP.NET Visual Studio (C#)

Часто требуется формировать адреса ссылок на веб-странице в зависимости от извлекаемых значений из базы данных, например в случае если нужно сослаться на другую страницу с параметром ID. Ссылка выглядит так:

~/page.aspx?id=5

Где число 5 будет извлекаться из базы данных.

Надеюсь все, кто сюда попал знают зачем нужен метод Eval().  Eval позволяет связать свойства элементов управления с данными, т.е. вывести значения необходимых полей из БД на страницу. Подробнее читаем в статье «Общие сведения о выражениях для привязки данных» на msdn.

Итак, допустим у нас имеется DataList, в котором выводятся гиперссылки на определенную страницу. Но часто бывает нужно, чтобы на той странице, куда пользователь попадет, кликнув по ссылке, была разная информация в зависимости от ссылки (ведь их много). Надеюсь вы поняли о чем идет речь.

Когда я первый раз это пытался сделать, у меня получился такой код:

<asp:DataList ID="DataList1" runat="server" DataSourceID="ds">
   <ItemTemplate>
      <asp:HyperLink ID="HyperLink1" runat="server"
         NavigateUrl='~/index.aspx?p=<%# Eval("ID") %>'>
         Ссылка
      </asp:HyperLink>
   </ItemTemplate>
</asp:DataList>

Это неправильно. Ссылка получается такой:

<a href="../index.aspx?p=&lt;%# Eval(&quot;ID&quot;) %>">

Как видите ссылка получилось совсем не такой которую я хотел.

Решение проблемы

HyperLink должен выглядеть либо так:

<asp:HyperLink ID="HyperLink1" runat="server" 
   NavigateUrl='<%# Eval("ID", "~/index.aspx?p={0}") %>'>
    Ссылка
</asp:HyperLink>

либо так:

<asp:HyperLink ID="HyperLink1" runat="server" 
   NavigateUrl='<%# "~/index.aspx?p=" + Eval("ID") %>'>
   Ссылка
</asp:HyperLink>

Коментарии:

  1. 05.08.2010 в 13:28

    Спасибо, помогло, сидел башку ломал.
    Почему интересно первый вариант не катит?

  2. 21.02.2011 в 16:23

    ОГРОМНОЕ СПАСИБО!!!!!!!!!
    Я над этим два дня тупил, уже каких только вариантов не наизобретал..

  3. 25.09.2012 в 15:49

    СПАСИБООООО!!!! оч помогло!!!

  4. 11.04.2013 в 13:11

    Спасибо огромное, очень помогло в понимании)))

  5. 11.07.2013 в 10:34

    Помогло! Спасибо!!