Как заставить загрузку работать в asp mvc 2? - PullRequest
0 голосов
/ 30 ноября 2010

Я использовал код, указанный в этой ссылке для обработки загрузки:

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;

namespace SiteVCM.Controllers { открытый класс FileDescription { публичная строка Name {get; задавать; } публичная строка 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 появляется, как и должно, но когда я нажимаю кнопку «Загрузить файл», ничего не происходит.

Представление, в котором находится этот код, принадлежит другому контроллеру, тогда как функция, в которой определена моя Upload-функция.

Пожалуйста, помогите мне, я искал несколько часов, чтобы исправить это, и я бесился.

Заранее спасибо !!

1 Ответ

0 голосов
/ 01 декабря 2010

Это точно работает

<% 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...