1

我有一个包含这样的列表视图的网络表单:

<asp:ListView ID="SlidesListView" runat="server" OnItemCommand="SlidesListView_ItemCommand">
                <LayoutTemplate>
                    <span runat="server" id="itemPlaceholder" style="display: inline-block" />
                </LayoutTemplate>
                <ItemTemplate>
                    <div class="SlideDiv">
                        <div>
                            <asp:ImageButton ID="ChangeDescriptionImageButton" runat="server" ImageUrl="~/Image/Change.png" CommandArgument="<%# Eval("ID") %>" CommandName="Change" AlternateText="Change" ToolTip="Change" />
                            <asp:Image ID="Image1" runat="server" CssClass="MiniSliderPic" ImageUrl='<%#Eval("ImagePath") %>' AlternateText='<%#Eval("Description") %>' ToolTip='<%#Eval("Description") %>' />
                            <p><%#Eval("Description").ToString().Replace(Environment.NewLine, "<br/>").Replace("\n", "<br />") %></p>
                        </div>
                    </div>
                    </span>
                </ItemTemplate>

            </asp:ListView>

和代码隐藏:

protected void SlidesListView_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        int ID = 0;
        switch (e.CommandName)
        {
            case "Change":
                ID = Convert.ToInt32(e.CommandArgument.ToString());
              break;

} }

但是当我尝试打开这个网络表单时,我遇到了这个错误:

解析服务此请求所需的资源时出错。请查看以下特定的解析错误详细信息并适当地修改您的源文件。服务器标签格式不正确

和 asp:ImageButton 标签变红了。为什么?

4

1 回答 1

1

改变这个:

CommandArgument="<%# Eval("ID") %>"

对此:

 CommandArgument='<%# Eval("ID") %>'

顺便说一句,我认为您不能以这种方式使用 imagebutton 。它会触发它赢得 OnCommand 而不是 ListView 的 ItemCommand。考虑使用里面有图片的链接按钮。

<asp:LinkButton ID="ChangeDescriptionLinkButton" runat="server"
    CommandName="Change"
    CommandArgument='<%# Eval("ID") %>' >
    <img src="~/Image/Change.png" alt="Change" />Change
</asp:LinkButton> 
于 2013-10-28T17:43:56.413 回答