如何在asp mvc 2中上传工作?

时间:2010-11-30 19:53:42

标签: jquery asp.net-mvc-2 file-upload

我已使用此链接中提供的代码进行上传处理:

http://towardsnext.wordpress.com/2009/04/17/file-upload-in-aspnet-mvc/

但这不适合我。 (当我在运行网站时单击“上传文件”按钮时,没有任何反应。) 我已经像这样编辑了我的观点

<script type="text/javascript">
    $(function () {
        $("#dialog").dialog({bgiframe: true, height: 140, modal: true, autoOpen: false, resizable: false}) });
</script>

以及

<div id="dialog" title="Upload files">
                    <% using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data", id = item.OrderId })){%>
                        <p><input type="file" id="fileUpload" name="fileUpload" size="23"/> </p>
                        <p><input type="submit" value="Upload file" /></p>
                    <% } %>
                </div>
                <a href="#" onclick="jQuery('#dialog').dialog('open'); return false">Upload File</a>

我的上传功能(在UploadController中定义)如下所示:

using System;

使用System.Collections.Generic; 使用System.Linq; 使用System.Web; 使用System.Web.Mvc; 使用System.Web.Mvc.Ajax; 使用System.IO; 使用SiteVCM.Models;

命名空间SiteVCM.Controllers {     公共类FileDescription     {         public string Name {get;组; }         public string WebPath {get;组; }         public long Size {get;组; }         public DateTime DateCreated {get;组; }     }

public class UploadController : Controller
{
    StoreEntities storeDB = new StoreEntities();

    //
    // GET: /Upload/

    FileRepository fileRepository = new FileRepository();

    //public ActionResult Index()
    //{
    //    return View(fileRepository.GetAllFileDescription());
    //}

    public ActionResult Upload(int id)
    {
        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[inputTagName];
            if (file.ContentLength > 0)
            {
                string filePath = Path.Combine(HttpContext.Server.MapPath("../Samples")
                    , Path.GetFileName(file.FileName));
                file.SaveAs(filePath);

                var order = storeDB.Orders.Single(c => c.OrderId == id);
                order.Url = filePath;
                storeDB.SaveChanges();
            }

        }

        return RedirectToAction("Index", "Status", new { id = 0 });
    }

}

和FileRepository.cs文件是相同的,除了命名空间和输入文件的位置。

JQuery对话框会弹出,但是当我点击“上传文件”按钮时没有任何反应。

此代码所在的视图属于antoher控制器,然后定义了我的上传功能。

请帮助我,我一直在寻找解决这个问题的时间,我吓坏了我。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

这肯定有用

<% using (Html.BeginForm("Upload", "Upload", FormMethod.Post, 
  new { enctype = "multipart/form-data" })){%>
     <input type="file" id="fileUpload" name="fileUpload"/>
     <input type="submit" value="Upload file" />
<% } %>

public ActionResult Upload(HttpPostedFileBase fileUpload)
{
  //fileUpload == posted file
}