文件扩展名列表可以在编辑器中编辑文本

时间:2013-11-13 14:17:11

标签: c# asp.net

尽量解释清楚,希望你能理解我的问题。

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

enter image description here

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

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

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

Repeater1_ItemDataBound函数中,在最后一个else if语句中,只要项目为:{text},源代码,xml文件,就会添加Edit Text函数...更多..

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

帮助!!!

如果你真的不明白,请问!!!

<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";
                }
          }
        }

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分:1)

您应该列出您认为是文本文件的所有extesions并将它们添加到您的代码中。 类似的东西:

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";
}

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

选择Type / subtype列以“text”

开头的所有扩展名