2016-11-24 4 views
0

私はasp.net mvcアプリケーションを使用していて、画像をアップロードしようとしています。 JavaScript値をmvcモデルプロパティに割り当てる

この

   @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> 

は、画像のアップロードが正常に動作しているが、値がモデルのプロパティに代入されていない私は、アップロードされた画像を表示しています。ここの画像機能

$(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); 
       } 

      }); 
     }); 
    }); 

をアップロードしている"@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) 

し、ファイルをアップロードし、保存を返すAJAX呼び出しに続いて

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

にファイル入力を変更パス、成功のコールバックの非表示入力の値を更新

$.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プロパティは、保存されたファイルのパスに読み込まれ、データベースに保存されます。

関連する問題