2012-01-28 14 views
4

ASP宣言:Link Button ControlでEval()にパラメータを渡す方法は?

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

私はエラーを取得: サーバーのタグがうまく形成されません。

LinkBut​​tonデコレートの問題点を教えてください。 ありがとうございます。

+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プロパティを設定することができます。分離コード

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

マークアップで

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

私は、コマンドイベントハンドラ可能な限り、それは比較的高価なポストバックを排除して対URLを使用して好みます。

2

このようにparamを渡すことができます。

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