2014-01-09 80 views
0

我使用这个插件:https://github.com/blueimp/jQuery-File-Upload/wiki,问题是当我点击上传,并给按钮来保存它调用一个控制器,到目前为止很好,但当他点击按钮需要来一些其他的属性,我没有得到这些属性与文件一起。 下面的代码: /查看JavaScript文件上传插件不工作

$("#anexoUpload").fileupload({ 
       dataType: 'json', 
       add: function (e, data) { 
        data.context = $('#salvarAnexo') 
         .on('click', function() { 
          data.submit(); 
          $.ajax({ 
            url: "@Url.Action("AdicionarAnexo")", 
            type: "POST", 
            cache: false 
           }).done(function (data) { 
           }); 
          data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
          data.submit(); 
         }); 
       }, 
       done: function (e, data) { 
        alert('Arquivo salvo com sucesso!'); 
        $(".bar").attr("style", "width:0%;") 
       } 

<li id="anexo"> 
           <span>Anexo</span> 
           <input type="file" name="files[]" id="anexoUpload" /> 
           <div id="progress"> 
            <button id="salvarAnexo">Salvar Anexo</button> 
            <div class="bar" style="width: 0%;"></div> 
           </div> 

          </li> 
       }); 

,我认为是在点击文件上传里面调用函数的问题。 我使用这个插件不需要在页面上回发并且只输入yes,并且当你插入时还需要使用两个id来插入数据库并返回ajax来显示附件列表。

//控制器

[HttpPost] 
     public ActionResult AdicionarAnexo() 
     { 
      var lista = new List<UploadFilesResult>(); 
      foreach (string file in Request.Files) 
      { 
       HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase; 
      } 
     } 

感谢

回答

0

可以使用数据属性

$.ajax({ 
    url: "@Url.Action("AdicionarAnexo")", 
    type: "POST", 
    data: { id1: "id1", id2: "id2" }, 
    cache: false 

})

那么你的控制器通过一个Ajax调用传递数据

public ActionResult AdicionarAnexo(string id1, string id2) 

你能说出他们你想要的,只要确保在视图上的名称完全相同的名称控制器

+0

上,但是在这种情况下,如果我把ID的他收到的文件相匹配的东西,这就是问题所在。 –

+0

我不理解。我以为你需要传递额外的信息才能保存到数据库中。我的回答会让你通过更多。你说如果你发送更多的信息,他得到的文件,你不想要这个?你需要什么? –

+0

如果在ajax调用中我通过我的控制器中的ID,我收到了什么? 该文件未上传 –