Как передать параметр в Eval () в элементе управления Link Link? - PullRequest
4 голосов
/ 28 января 2012

ASP Объявление:

 <asp:LinkButton ID="LinkButton1" runat="server" Text="edit item" onclick="'AddItem.aspx?catid=<%# Eval("CollectionID")%>'"></asp:LinkButton>

Я получаю сообщение об ошибке: тег сервера сформирован неправильно.

в чем проблема с декорацией LinkButton?Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 28 января 2012
<asp:LinkButton ID="LinkButton1" runat="server" Text="edit item" onclick='AddItem.aspx?catid=<%# Eval("CollectionID")%>' />

Я удалил лишние кавычки вокруг значения атрибута для OnClick.

Однако OnClick ожидает делегата, а не URL. Либо используйте гиперссылку, либо переключитесь на обработчик событий.

<a href='AddItem.aspx?catid=<%# Eval("CollectionID")%>'>edit item</a>

В этой статье показано, как передать аргумент в обработчик события с помощью кнопки ссылки. Вместо использования OnClick вы можете использовать OnCommand и установить свойство CommandArgument.

В разметке

  <asp:LinkButton id="lnkEdit" 
       Text="Edit Item"
       CommandArgument='<%# Eval("CollectionID")%>'
       OnCommand="lnkEdit_Command" 
       runat="server"/>

В коде позади

protected void lnkEdit_Command( object sender, CommandEventArgs e )
{
    // evaluate e.CommandArgument and do something with it
}

Я предпочитаю использовать URL-адрес вместо командного обработчика событий, когда это возможно, поскольку это устраняет сравнительно дорогую обратную передачу.

2 голосов
/ 28 января 2012

Таким образом вы можете передать param.

<asp:LinkButton ID="LinkButton1" runat="server" Text="edit item" 
PostBackUrl='AddItem.aspx?catid=<%#Eval("CollectionID")%>&catname=<%#Eval("CollectionName")%>' />
...