0

试着解释得这么清楚,希望你能理解我的问题。

我的 aspx 页面允许客户端将文件(允许文件的所有扩展名)上传到根文件夹中。然后在那个aspx页面中,它有一个Repeater控件来显示所有上传的文件。

在此处输入图像描述

我一直在寻找方法来检测可以在编辑器控件中编辑哪个文件。

例如:if item= xml file --> show Edit Text

if item= source code file ---> show Edit Text

Repeater1_ItemDataBound函数中,在最后一条else if语句中,Edit Text只要项目是:文本文件,源代码,xml文件...更多更多...

在我下面的代码中,我可以做一些文件的扩展名,但我知道这还不够。

帮助!!!

实在不明白的请追问!!!

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand"
OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
 <tr>
  <td>
     <asp:Label ID="imagelabel" runat="server" Text=""></asp:Label> 
   </td>
   <td>
       <asp:LinkButton ID="lnkFolder" runat="server" Text='<%# Eval("Name") %>' CommandName="Select"></asp:LinkButton>
   </td>
   <td >
     <asp:LinkButton ID="LinkButton1" runat="server" Text="<img src='pic/trash.png'/> Delete" CommandArgument='<%# Eval("Path") +"," +  Eval("Type")%>'CommandName="Delete"> </asp:LinkButton>
   </td>
    <td>
       <asp:LinkButton ID="LinkButton2" runat="server" Text="<img src='pic/gear--pencil.png'/> Rename" CommandArgument='<%# Eval("Path") + "," +  Eval("Type") + "," + Eval("Name")%>'CommandName="Edit"></asp:LinkButton>
    </td>
    <td>
        asp:LinkButton  ID="lbtnEditText" runat="server" Text="" CommandArgument='<%# Eval("Path") + "," + Eval("Name")%>'CommandName="EditText" OnCommand="Button1_Click"></asp:LinkButton>
     </td>

 </tr>

</ItemTemplate>
</asp:Repeater>

看看我的Repeater1_ItemDataBound功能:

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
      if (((DataRowView)e.Item.DataItem).Row["Type"].ToString() == "D")// if item= folder
         {
           ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/folder.png'>";
         }
      else
        {
          string fileExtension = ((DataRowView)e.Item.DataItem).Row["Extension"].ToString();
            if (fileExtension.Equals(".gif") || fileExtension.Equals(".jpg") || fileExtension.Equals(".png"))
               ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/gallery.jpg'>";
            else if (fileExtension.Equals(".doc") || fileExtension.Equals(".docx"))
                ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/doc.gif'>";
            else if (fileExtension.Equals(".pdf"))
                ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/pdf.gif'>";
            else if (fileExtension.Equals(".xls"))
                 ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/excel.gif'>";
            else if???
                {
                  ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/Text.gif'>";
//add Edit Text function here
                  ((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/> Edit Text";
                }
          }
        }
4

2 回答 2

2

您可以创建一个带有“可编辑”文件扩展名的列表,并检查扩展名是否在其中。我认为类似的东西,

var editable = new[]{ ".xml", ".txt".... et cetera };
else if(editable.Contains(fileExtension))
{
    display edit button
}

你可以做得更好。您可以创建代表文件信息的类。

class FileInfo
{
    public string Extension { get; set; }
    public string IconPath { get; set; }
    public string Editable { get; set; }
}

//somewhere inside you class
var files = new List<FileInfo>();
files.Add(new FileInfo(){ Extension = ".txt", IconPath = "<img src='pic/pe.png'/>", Editable = true});
// do this for all extensions

var fileInfo = file.First(f => f.Extension.Equals(fileExtension))
((Label)e.Item.FindControl("imagelabel")).Text = fileInfo.IconPath;
if(fileInfo.Editable)
{
    ((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/> Edit Text";
}
于 2013-11-13T14:49:36.213 回答
1

您应该列出您认为是文本文件的所有扩展并将它们添加到您的代码中。就像是:

var textExtensions = new HashSet<string> { ".txt", ".css", ".htm", ".html", ".xml", ".c",  /*etc.*/ };

...

else if textExtensions.Contains(fileExtension)
{
  ((Label)e.Item.FindControl("imagelabel")).Text = "<img src='pic/Text.gif'>";
  //add Edit Text function here
  ((LinkButton)e.Item.FindControl("lbtnEditText")).Text = "<img src='pic/pe.png'/>Edit Text";
}

如果您想要一个通常被视为文本文件的扩展名列表,请查看IIS 中的 MIME 类型中的表格。

选择类型/子类型列以“文本”开头的所有扩展

于 2013-11-13T14:54:48.557 回答