2012-01-28 3 views
4

ASP Декларация:Как передать параметр Eval() в Link Button Control?

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

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

какая проблема с укусом LinkButton? Спасибо заранее.

+0

проблема с цитатой .. может быть .. Просто мысль, почему не поднять событие в коде позади и сделать response.redirect, поскольку это то, что вы делаете? – AJP

ответ

7
<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> 

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

В разметке

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

В CodeBehind

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

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

2

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

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