0

こんにちは、私はmvc3に取り組んでいます

ここで、以前にアップロードしたファイルをセッション データから削除する必要があります

データベースに挿入する前にファイルを表示しているので、セッションのデータを表示しています。以前に選択したファイルを削除する必要があります。選択したファイルのインデックス値を取得してセッションからファイルを削除する方法を教えてください。

たとえば、ここでこの投稿を確認してください。これはc#にありますが、これはmvc3にある必要があります。この作業を手伝ってください。誰か助けてください。

ここに私のモデルがあります

 using System;
  using System.Collections.Generic;
   using System.Linq;
  using System.Web;
   using System.ComponentModel.DataAnnotations;

   namespace BugTracker.Models
 {
public class BugModel
{


    public BugModel()
    {
        if (ListFile == null)
            ListFile = new List<BugAttachment>();
    }
    public List<BugAttachment> ListFile { get; set; }

    public string ErrorMessage { get; set; }
}

public class BugAttachment
{
    public string FileName { get; set; }
    public int BugAttachmentID { get; set; }
    public string AttachmentName { get; set; }
    public int BugID { get; set; }
    public string AttachmentUrl { get; set; }
    public string AttachedBy { get; set; }
}

}

ここに私のコントローラー

      public ActionResult UploadFile(string AttachmentName, BugModel model)
        BugModel bug = null;
        if (Session["CaptureData"] == null)
        {
            bug = model;
        }
        else
        {

            bug = (BugModel)Session["CaptureData"];
        }
        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file1 = Request.Files[inputTagName];
            if (file1.ContentLength > 0)
            {
                BugAttachment attachment = new BugAttachment();
                var allowedExtensions = new[] { ".doc", ".xlsx", ".txt", ".jpeg", ".docx" };
                var extension = Path.GetExtension(file1.FileName);
                if (!allowedExtensions.Contains(extension))
                {
                    model.ErrorMessage = "{ .doc, .xlsx, .txt, .jpeg }, files are allowed.... ";
                }
                else
                {
                    string filename = Guid.NewGuid() + Path.GetFileName(file1.FileName);
                    string path = "/Content/UploadedFiles/" + filename;
                    string savedFileName = Path.Combine(Server.MapPath("~" + path));
                    file1.SaveAs(savedFileName);
                    attachment.FileName = "~" + path.ToString();
                    attachment.AttachmentName = AttachmentName;
                    attachment.AttachmentUrl = attachment.FileName;
                    bug.ListFile.Add(attachment);
                    model = bug;
                }
                Session["CaptureData"] = model;
            }

        }
        ModelState.Clear();

        return View("LoadBug", bug);
    } 

そしてここに私のビューページ

    <div class="UploadMain">
    <%:Html.Label("Attachment Name:") %>
    <%:Html.TextBoxFor(model=>model.AttachmentName) %>
    <span>
        <%:Html.Label("Upload Files") %></span>
    <input type="file" name="file" id="file" />
    <input type="submit" value="Upload" id="Upload" class="style-name cancel"  />
    <%--onclick="window.location.href='<%= Url.Action("UploadFile", "Bug") %>';"--%>
    <table align="center" class="gridtable" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <th>
                Attachment Name
            </th>
            <th>
                Attachment Url
            </th>
            <th>
            Action 
            </th>
        </tr>
        <% if (Model != null && Model.ListFile != null)
           {  %>
        <% foreach (var Emp in Model.ListFile)
           { %>
        <tr class="Data">
            <td >
                <%:Emp.AttachmentName %>
            </td>
            <td >
                <%: Emp.FileName %>
            </td>
           <td>
          <%-- <%= Html.ActionLink("Delete", "Delete")%>--%>

            <%:Html.ActionLink("Delete", "Delete", new { @FileName = Emp.FileName })%>


            </td>
        </tr>
        <% } %>
        <% } %>
    </table>
</div> 

たとえば、ここでこの投稿を確認してください。これはc#にありますが、これはmvc3にある必要があります。この作業を手伝ってください。誰か助けてください。

前もって感謝します

4

1 に答える 1

1

アップロードしたファイルを削除するには、そのファイルパスだけが必要です。File.Delete("filepath"); を使用します。どのファイルを削除するかを知るには、削除アクションで ID を取得する必要があります。

削除 (int id)

次に、アクション リンクで BugAttachmentID を渡します: (ルート値/パラメーターを使用)

<%:Html.ActionLink("Delete", "Delete", new { @FileName = Emp.FileName }, new { id = Emp.BugAttachmentID })%>

次に、削除メソッドで ID を使用して、削除する FileList 内のファイルを見つけます。次に、添付ファイルの URL を使用して File.Delete を呼び出します。

これが役立つことを願っています。

于 2012-09-06T14:33:19.340 に答える