从服务器删除图像

时间:2014-07-29 14:49:35

标签: c# asp.net listview checkbox

我正在编写一个代码,用于在Listview中选择图像并从服务器中删除它们。不幸的是,我无法在调试期间删除任何图像并且没有错误。这是代码:

 <asp:ListView ID="ListView2" runat="server" DataKeyNames="ID_BG" DataSourceID="SqlDataSource_BGdelete">


<ItemTemplate>
                 <label><input id="checkbox1" name="BG_list" type="checkbox" runat="server" value='<%# Eval("BG_fileName") %>'/>
                <img alt="" style="width:150px" src="/Members/images/BG/icons/<%# Eval("BG_fileName") %>"></label>      
</ItemTemplate>
<LayoutTemplate>
                 <div id="itemPlaceholderContainer" runat="server" style="">
                     <span runat="server" id="itemPlaceholder" />
                 </div>
                 <div style="">

<asp:Button class="btn btn-default" ID="DeleteBackground" runat="server" Text="Delete" OnClick="DeleteBackground_click" />

                 </div>
             </LayoutTemplate>
 .....

代码背后

protected void DeleteBackground_click(object sender, EventArgs e)
    {
        foreach (ListViewItem itemRow in this.ListView2.Items)
        {

            var checkBtn = (HtmlInputCheckBox)itemRow.FindControl("checkbox1");

            if (checkBtn.Checked)
            {
                string fileName = ("~/Members/images/BG/" + checkBtn.Value);
                if (fileName != null || fileName != string.Empty)
                {
                    if ((System.IO.File.Exists(fileName)))
                    {
                        System.IO.File.Delete(fileName);
                    }

                }



            }
        }
    }

2 个答案:

答案 0 :(得分:1)

这2行

if ((System.IO.File.Exists(fileName))) 
   System.IO.File.Delete(fileName);

必须是

if (System.IO.File.Exists(Server.MapPath(fileName)))
   System.IO.File.Delete(Server.MapPath(fileName));

P.S。

检查if (fileName != null || fileName != string.Empty)是没有意义的,因为fileName永远不会为空或空。

答案 1 :(得分:0)

肯定是id =&#34; checkbox1&#34;由渲染器重命名,因为项目listView中没有相同的Id。检查生成的html。