求教,单页面上传附件有关问题与讨论

求教,单页面上传附件问题与讨论。
在vs2005中,关于用户上传附件的操作,我想用ajax.net操作,但是不能实现多次上传,我用的是刷新的方式做的,
不知道现在大家有什么好的解决方案,一起讨论一下:
要求:
1.一张页面内有8个要求上传附件的选项。
2.每个上传附件的选项,最多可以上传10项内容。
3.附件内容形式是图片和文本。
4.上传的附件可以删除(最好可以修改)。
需要附件的页面是一张大的表单,有60左右字段,一方面要考虑界面友好交互,另一方面也要考虑与数据库的交互情况。
根据以上要求,我用比较笨的方法可以基本实现功能,功能实现了,我想考虑怎么能有更好的方法解决这个问题。
下面是我笨拙的代码,希望给点建议。
protected void lbtnOupload1_Click(object sender, EventArgs e)
  {
  if (!string.IsNullOrEmpty(FileUpload1.FileName))
  {
  int i = (int)ViewState["count1"];
  if (i == 4)//记录附件个数 
  {
  lbtnOupload1.Visible = false;
  FileUpload1.Visible = false;
  }
  string LastName = "";
  string FileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Second.ToString();
  string fileurl = common.DoFileUpload(FileUpload1, Server.MapPath("attFile"), FileName, out LastName);//调用上传方法,上传图片。
  if (LastName == "gif" || LastName == "jpg" || LastName == "jpeg")//判断附件类型 
  {//图片类
  ViewState["upload1"] += "<a href=attFile/" + fileurl + " target='_blank'><img src=attFile/" + fileurl + " width='60' height='60'/></a>,";
  lblupload1.Text = ViewState["upload1"].ToString();//显示图片的串进行累加,显示所有上传的图片
  ViewState["lbluplaod1"] += fileurl + ",";//记录图片的路径,插入到数据库中

  }
  else
  {//文本类
  ViewState["upload1"] += "<a href=attFile/" + fileurl + " >" + fileurl + "</a>,";
  lblupload1.Text = ViewState["upload1"].ToString();
  ViewState["lbluplaod1"] += fileurl + ",";
  }

  ViewState["count1"] = (int)ViewState["count1"] + 1; //记录附件个数
  }

  }

protected void lbtnUndo2_Click(object sender, EventArgs e)
  {
  ViewState["count1"] = (int)ViewState["count1"] - 1; //设置获取上传文件的个数
  string UploadStr = lblupload1.Text.Remove(lblupload1.Text.Length - 1);//UploadStr是上传后记录图片的字符串 
  string RemoveFileUrl = null;//要删除的文件字符串
  int intLastIndexOf = UploadStr.LastIndexOf(",") == -1 ? 0 : UploadStr.LastIndexOf(",");
  int count = UploadStr.Substring(intLastIndexOf).Length;
  string UploadFileUrl = (string)ViewState["lbluplaod1"];//设置上传的文件的路径
  UploadFileUrl = UploadFileUrl.Remove(UploadFileUrl.Length - 1);//删除上传图片的路径
  int FileUrl = UploadFileUrl.Substring(UploadFileUrl.LastIndexOf(",") == -1 ? 0 : UploadFileUrl.LastIndexOf(",")).Length;//获取上传附件个数
  RemoveFileUrl = UploadFileUrl.Substring(UploadFileUrl.LastIndexOf(",") == -1 ? 0 : UploadFileUrl.LastIndexOf(","));//要删除的当前附件字符串
  lblupload1.Text = UploadStr.Remove(UploadStr.Length - count) + ",";//从字符串中删除当前的字符串
  ViewState["upload1"] = UploadStr.Remove(UploadStr.Length - count) + ",";附件个数-1
  ViewState["lbluplaod1"] = UploadFileUrl.Remove(UploadFileUrl.Length - FileUrl) + ",";

  Artworks artWorks = new Artworks();//执行数据库操作
  if (RemoveFileUrl.Remove(RemoveFileUrl.Length - 1) != "")
  {
  int intIndex = RemoveFileUrl.IndexOf(",");
  string DelUpLoadfile = RemoveFileUrl;
  if (intIndex != -1)
  {
  DelUpLoadfile = RemoveFileUrl.Remove(0, 1);
  }
  artWorks.DeleteUpLoadFile(DelUpLoadfile, tbOrderID.Text);
  }
  }
   




------解决方案--------------------
帮你顶一下吧!
------解决方案--------------------
ding
------解决方案--------------------
UP!
------解决方案--------------------
mark

等高手提出好的方法吧
------解决方案--------------------
為什么用ajax就不能實現多文件上傳?肯定可以的。
另外FileUpload不支持異步,Updatepanel也用不了。

下面這是我自己的,抄了不少網上的,自己也添加了一些,我發現這玩意只能用一次,第二次就不行了,LZ用試試看
C# code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpLoad.aspx.cs" Inherits="UpLoad" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html> 
    <head> 
        <title>多文件上传</title>
        <script type="text/javascript" language="javascript">
            function addFile() 
                { 
                    var str = '<INPUT type="file" size="50" NAME="File" ></br>' ;
                    document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str);
                } 

            function forReset()
                {
                    var files=document.getElementsByName("File");
                    for(var j=0; j<files.length; j++)
                    {
                        files[j].outerHTML=files[j].outerHTML.replace(/value=\w/g,'');
                    }
                }
        </script>
    </head> 
    <body> 
        <form id="form1" method="post" runat="server" enctype="multipart/form-data"> 
            <div align="center">
                <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <div>
                            <p>
                                <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
                            </p>
                            <p>
                                <asp:DropDownList ID="ddlAction" runat="server" AutoPostBack="true"
                                    onselectedindexchanged="ddlAction_SelectedIndexChanged" >
                                    <asp:ListItem Value="true"></asp:ListItem>
                                    <asp:ListItem Value="false"></asp:ListItem></asp:DropDownList>
                            </p>
                            <p>
                                <asp:RadioButton ID="radYes" runat="server" GroupName="groupName1"/>
                                <asp:RadioButton ID="radNo" runat="server" GroupName="groupName1"/>
                            </p>
                        </div>
                        <div>
                        
                        <p id="MyFile"><input type="file" size="50" name="File" /><br/></p>
                        <p> 
                            <input type="button" value="增加(Add)" onclick="addFile()"/> 
                            <input onclick="forReset()" type="button" value="重置(ReSet)"/> 
                            <asp:Button Runat="server" Text="开始上传" ID="UploadButton"></asp:Button> 
                        </p> 
                        <p> 
                            <asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt" 
                                Width="500px" BorderStyle="None" BorderColor="White"></asp:Label> 
                        </p>
                        <p>
                            <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
                        </p>  
                        </div>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="UploadButton" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
            </div> 
        </form> 
    </body> 
</html>