2016-11-24 2 views
0

Я использую приложение asp.net mvc и пытаюсь загрузить изображение.Назначение значения JavaScript для свойства модели mvc

Это загрузив функция

$(document).ready(function() { 

     TableDatatablesEditable.init(); 
     $("#UploadImg").change(function() { 
      var data = new FormData(); 
      var files = $("#UploadImg").get(0).files; 
      if (files.length > 0) { 
       data.append("MyImages", files[0]); 
      } 

      $.ajax({ 
       url: "@Url.Action("UploadFile")", 
       type: "POST", 
       processData: false, 
       contentType: false, 
       data: data, 
       success: function (response) { 
        $("#HeaderInput").text('/Upload/' + response); 

        $("#imgPreview").attr('src', '/Upload/' + response); 
       }, 
       error: function (er) { 
        alert(er); 
       } 

      }); 
     }); 
    }); 

изображение Здесь я отображая загруженное изображение

   @Html.Label("Logo Upload", new { @class = "col-md-3 control-label" }) 

       <div class="col-md-7"> 
        <input type="file" class = "col-md-3 control-label" id="UploadImg" value="@Model.FundDetail.ImagePath" name="@Model.FundDetail.ImagePath" /> <br /><br />       
        <br />     
       </div> 
      </div> 

загрузка изображения работает нормально, но значения не назначая имуществу модели "@Model.FundDetail.ImagePath"

Как я могу присвоить значение из javascript. Может ли кто-нибудь предложить мне, как это сделать.

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

+0

Вы не можете назначить значение для ввода файла (по соображениям безопасности) - единственный способ, которым он может быть установлен, - это выбор пользователем файла. но что вы пытаетесь сделать с этим кодом? (с именем 'name =" @ Model.FundDetail.ImagePath "не имеет смысла) –

+0

У меня есть страница профиля профиля, в которой есть кнопка загрузки изображения с другими входами. поэтому, когда нажата кнопка отправки, она должна сохранять информацию пользователя с изображением. Так вы имеете в виду, когда изображение выбрано, тогда я должен сохранить изображение. –

+0

Либо тогда, либо когда вы отправляете форму с другими входами (непонятно, почему вы используете ajax для загрузки файла). Ваша модель представления должна иметь свойство (скажем) 'HttpPostedFileBase Image', а затем вход файла будет' @ Html.TextBoxFor (m => m.Image, new {type = "file"}) 'и все будет правильно bound –

ответ

1

Вы не можете установить атрибут ввода имени файла по соображениям безопасности value. Единственный способ, которым он может быть установлен, - это выбрать пользователя в браузере.

В вашей форме, включает скрытый вход для имени файла

@Html.HiddenFor(m => m.FundDetail.ImagePath) 

и изменить входной файл для

<input type="file" class = "col-md-3 control-label" id="UploadImg" /> 

Тогда при вызове Ajax, где вы загружаете файл и вернуть сохраненные путь, обновить значение скрытого ввода в обратном вызове успеха

$.ajax({ 
    .... 
    success: function (response) { 
     $("#HeaderInput").text('/Upload/' + response); 
     $("#imgPreview").attr('src', '/Upload/' + response); 
     // Set the value of the hidden input 
     $('#FundDetail_ImagePath').val(response); 
    }, 
    .... 
}); 

Теперь, когда ваш субъект это форма, свойство ImagePath будет заполнено сохраненным путем файла, который затем можно сохранить в базе данных.

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