Краткий ответ: NavigateUrl='<%# Eval("Key.Id", "ViewItem.aspx?id={0}") %>'
Более длинное объяснение:
Проблема в вашем коде в том, что вы используете выражение привязки данных только для части вашего атрибута веб-элемента управления. Вам нужно переместить все внутри выражения привязки данных.
Прежде всего, выражение привязки данных выглядит так:
<%# EXPRESSION %>
В основном правило использования выражения привязки данных для атрибута веб-элемента управления заключается в том, что выражение должно быть единственным в атрибуте:
<asp:HyperLink ID="lb" runat="server"
Text='<%# EXPRESSION %>'
NavigateUrl='<%# EXPRESSION %>' />
Итак, ваш первый атрибут, Text
, правильный. Но ваш второй атрибут, NavigateUrl
, неверен. Потому что вы положили ViewItem.aspx?id=
в качестве значения атрибута, оставив + '<%# Eval("Key.Id") %>'
вне любого атрибута, кроме внутри тега управления.
Вот правильный синтаксис:
<asp:HyperLink ID="lb" runat="server"
Text='<%# Eval("Key.Id") %>'
NavigateUrl='<%# Eval("Key.Id", "ViewItem.aspx?id={0}") %>'/>
Обратите внимание, что мы используем строку формата в качестве второго параметра для Eval()
. Это эквивалентно следующему, более явному синтаксису:
<asp:HyperLink ID="lb" runat="server"
Text='<%# Eval("Key.Id") %>'
NavigateUrl='<%# String.Format("ViewItem.aspx?id={0}", Eval("Key.Id")) %>'/>