Метод никогда не вызывается - PullRequest
0 голосов
/ 14 марта 2012

Вот как я вызываю метод:

 $.ajax({ url: "MyController/Mymethod", type: "POST", data: { file: file.files[0] } })

А вот метод:

[HttpPost]
    public ActionResult Mymethod(HttpPostedFileBase file)
    {
        if (file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/App_Data/images/location"), "petko.jpg");
            file.SaveAs(path);
        }
        return RedirectToAction("Index");
    }

file: file.files [0] имеет тип File.Метод никогда не вызывается.Почему?

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Хотя я знаю, что вопрос в том, почему ваш метод никогда не вызывается, как вы заполняете file.files? Если это ввод файла типа на вашей странице, загрузка не произойдет до тех пор, пока форма не будет отправлена, поэтому, используя ваш метод, он все равно никогда не отправит файл на ваш контроллер.

Javascript не имеет доступа к файловой системе по соображениям безопасности. Если вы пытаетесь выполнить загрузку файла ajaxy, вы можете посмотреть загрузчики на основе Flash, такие как Uploadify или SWFUpload

0 голосов
/ 14 марта 2012

Я бы начал с предоставления функции ошибки при вызове AJAX, чтобы вы могли получить представление о том, что происходит на стороне клиента. Пример:

$.ajax({ 
  url: "MyController/Mymethod", 
  type: "POST", 
  data: { file: file.files[0] },
  error: function(jqXHR, textStatus, errorThrown) {
    alert( textStatus + ": " + errorThrown );
  }
  success: function(data, textStatus, jqXHR) {
    alert( "success: " + textStatus );
  }
});

Я предполагаю, что вы уже установили точку останова внутри вашего контроллера, чтобы убедиться, что он на самом деле не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...