CommandName 在源代码中不可见

CommandName not visible in source code

我有这个代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Command1">
                    <img src="../images/image1.png" alt="" />
                </asp:LinkButton>                                         
            </ItemTemplate>
        </asp:DataList>
    </ContentTemplate>
</asp:UpdatePanel>

和这段代码

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
    if (e.CommandName == "Command1")
    {      
        // Never drops here
    }           
}

事件正在触发中。
但是当我调试时,LinkBut​​ton1 的 CommandName 在源代码中是不可见的。
因此,if 语句不起作用。

有什么想法吗?

编辑:

我意识到我的页面还有一个属于这种情况的错误。
然后我使用 GridView 而不是 DataList 并使用 GridView 的 RowCommand 事件并修复了这个问题。

原因是因为您试图从 DataList 而不是 LinkButton 获取 CommandName。如果您执行以下操作,您的代码将起作用:

protected void btnSample_Click(object sender, EventArgs e)
{
     // Instantiate:
     var command = ((LinkButton)sender).CommandName;

     // Do additional logic.
}

我相信您的意图是对 Click 事件实际执行一些操作。如果这不是您的情况,则您需要 FindControlDataList 中的事件进行实例化,然后实例化 LinkButton 以获得 CommandName。希望这能为您指明正确的方向。

我会在 DataList 内做一个示例,但如果没有确切的实施和其他信息,我将无法做到。和上面类似,只是在当前控件中分配Control