0

我对 OnCommand 事件有疑问。当我将此参数作为参数或显示时,一切都很好,但如果我将它用作 CommandArgument,我会得到 InvalidCastException。在方法 CommandArgument 后面的代码中等于 "" (string.Empty)

在我的 aspx 文件中,我有以下代码:

<%# (bool)Eval("IsCandidateFavourite") %> //just display value
<asp:ImageButton id="ImageButton1" runat="server" 
    CommandArgument="<%# (bool)Eval("IsCandidateFavourite") %>"
    OnCommand="imBtnFavorite_Command"
    ImageUrl='<%# GetIsFavoriteImageUrl((bool)(Eval("IsCandidateFavourite")) ) %>'/>

在我的文件后面的代码中,我有这个

public string GetIsCandidateFavoriteImageUrl(bool isNowFavorite)
{
    if (isNowFavorite)
    {
        return @"~/_images/icon_grid_fav.gif";
    }
    return @"~/_images/icon_grid_unfav.gif";
}

protected void imBtnFavorite_Command(object sender, CommandEventArgs e)
{
    bool isFavorite =(bool) e.CommandArgument;
}
4

2 回答 2

2

尝试使用单引号代替(')双引号(")CommandArgument

CommandArgument='<%# (bool)Eval("IsCandidateFavourite") %>'
于 2012-05-14T09:23:24.573 回答
0

CommandArgument 是此处提到的字符串类型-> http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.imagebutton.commandargument.aspx

于 2012-05-14T09:14:35.037 回答