2016-12-08 3 views
0

Привет У меня есть диалоговое окно всплывающее окно содержит форму обновления и вход загрузки я создал действие обновления, и я добавил некоторые Закачай Коды проблема входного файла всегда нуль в видепочему HttpPostedFileBase файл всегда пустой

контроллер

[HttpPost] 
public ActionResult Setting(user user, HttpPostedFileBase file) 
{ 

Посмотреть

@model Magellane.Models.user 
@using (Html.BeginForm("Setting", "Account", FormMethod.Post, new { role = "form", id = "profileForm", @class = "form-horizontal", enctype = "multipart/form-data" })) 
{ 
    @Html.ValidationSummary(true) 
    <input type="hidden" name="user_id" value="@Session["user_id"]"> 
    <div class="form-group"> 
     <label for="pass1" class="col-sm-2 control-label">Nom decole</label> 
     <div class="col-sm-10"> 
      <input class="form-control-modal required" id="company" type="text" value="@Model.company" name="company" minlength=5> 
      <span class="field-validation-error" data-valmsg-for="company" data-valmsg-replace="true"></span> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="pass1" class="col-sm-2 control-label">Logo</label> 
      <input type="file" class="margin-none" name="logo" id="file" onchange="readURL(this);" /> 
    </div> 



$.ajax({ 
    url: '/Account/setting', 
    type: 'POST', 
    data: $('form').serialize(), 
    dataType: 'json', 
    async: false, 
    success: function (xhr, status, error) { 
     bootbox.alert(xhr.message); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     bootbox.alert(thrownError); 
    } 
}); 

есть ли решение?

+0

Чтобы отправлять файлы с помощью ajax, вам нужно использовать 'FormData' и установить правильные параметры ajax. См. [Этот ответ] (http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) для примера –

+0

Проверьте эту ссылку для получения полного кода для файла передачи [ссылка] (http://stackoverflow.com/questions/40644898/mvc5-ajax-beginform-upload-form-with-files/40648538#40648538) –

ответ

0

Проблема в вашем файле <input> тег name=logo отличается от HttpPostedFileBase file переменная/параметр. (т. е. логотип! = файл)

Возможные исправления.

  • Вы можете изменить HttpPostedFileBase file к HttpPostedFileBase logo

    ИЛИ

  • Вы можете изменить <input type="file" name="file">

Примечание Всегда помните, чтобы проверить для name из control/tag, потому что карта Asp.Net MVC с использованием name не id.

Смежные вопросы