2016-11-24 61 views
0

我正在使用asp.net mvc應用程序並嘗試上載圖像。爲MVC模型屬性指定JavaScript值

這是上傳圖片功能

$(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」})'並且它將全部正確綁定 –

回答

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); 
    }, 
    .... 
}); 

現在當你的subm它的形式,ImagePath屬性將填充文件的保存路徑,然後可以保存到數據庫。