2016-03-25 13 views
0

BeginForm'un içine dosya yükleme fonksiyonu eklemek istiyorum Dosyaya bir kere yükle gönder düğmesine tıkladım Bu dosyayı yüklemek için başka bir yönteme yönlendirmek istiyorum, aynı BeginForm eylemi değil.Dosya yüklerken bir BeginForm

Ben

@using (Html.BeginForm("Add_Field_Values", "Home", new { Product_ID = ViewBag.Product_ID , FieldID = ViewBag.FieldID }, FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 

         if (condition) 
         {  
           <input type="file" name="files"> 
           <input id="adddetails" type="button" value="Upload File to Server"> 
         } 



      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Save Details" class="btn btn-success" /> 
      </div> 

} 

<script> 
$().ready(function() { 

     $("#adddetails").click(function() { 

      $.ajax({ 
       type: "POST", 
       url: "/FileUpload/Financing_Product_Feature_Upload", 
       data: 
       { 
         .... 
       }, 
       success: function (data) { 

       } 

      }); 
     }); 
</script> 

sonra bu kullanarak Ajax Fonksiyonu do FileUpload denetleyici sınıfında aşağıdaki gibi ben denetleyici yöntemine sahip nasıl Sorum dosyasını

yükleyebilir ajax çağrı yukarıda tanımlamaktır

[HttpPost] 
    public ActionResult Financing_Product_Feature_Upload(HttpPostedFileBase files, string productid) 
    { 

lütfen önerileri

cevap

0

İyi Yapabilirsin, ama ne yazık ki benim düşüncemde productId gibi denetleyici eylemine parametreler iletemeyeceksin, ama ne yapabilirsin, Sadece bu değer için gizli bir alanın olabilir.

Kişisel ajax formu aşağıdaki gibi görünmelidir:

@using (Html.BeginForm("Add_Field_Values", "Home", FormMethod.Post, new { @class = "myForm"})){ 
<input type="file" name="files" /> 
@Html.Hidden("ProductId", ViewBag.Product_ID); 
} 

Ve kontrolör gibi görünmelidir:

[HttpPost] 
public ActionResult Financing_Product_Feature_Upload() 
{ 
var files = Request.Files; 
var productId = Request.Params["ProductId"].ToString(); 
} 

umarım

$("#adddetails").click(function (evt) { 

    $.ajax({ 
     type: "POST", 
     url: "/FileUpload/Financing_Product_Feature_Upload", 
     contentType: false, 
     processData: false, 
     data: new FormData($('.myForm').get(0)), 
     success: function (message) { 
      alert(message); 
     }, 
     error: function() { 
      alert("There was error uploading files!"); 
     } 
    }); 
}); 

dosya giriş böyle olmalı Bu sizin için yararlı olabilir ve benim cevabım, iyi şanslar ana kavramı olsun;)

+0

dosya eki dışında çeşitli özelliklere sahipse, bunu ajax 'verilerinde nasıl alabilirim: new FormData ($ ('. MyForm'). Get (0)),'? – kez

+0

Aslında, şimdi 'processData: false' olduğunda, herhangi bir özelliği yalnızca modele, dosyalara veya diğer bazı verilere denetleyemezsiniz, önerim gizli alanları kullanmaktır. Ne yazık ki, dosya alma veya ajax ile denetleyici eyleminde özellikleri aktarma konusunda başka bir çözüm bilmiyorum. – Marius

+0

Aslında demek istediğim dosya eki dışında bir çok özelliği varsa, tam olarak nasıl kimlik alacağımı, $ ('. MyForm') ile ne kastediyorsunuz? (0) 'olsun, bu özelliklerden biri anlamına gelir. ? – kez

İlgili konular