文件无法通过AJAX传递给Controller

时间:2016-10-07 16:56:14

标签: javascript jquery asp.net ajax asp.net-mvc

我使用自定义文件上传器,需要传递名称为 files [] 的文件参数。因为它没有任何意义,文件数据是由文件上传器的默认名称发送的。但是,我不能在Controller中使用相同的参数名称。那么,我如何使用 files [] 作为输入控件的名称参数?

查看:

<input type="file" name="files[]" id="filer_input" multiple="multiple" >


<script>    

    function create(event) {

        event.preventDefault();
        var formdata = new FormData($('#frmCreate').get(0)); 

        $.ajax({
            type: "POST",
            url: '@Url.Action("Create", "Experiment")',
            cache: false,
            dataType: "json",
            data: formdata,         
            processData: false, 
            contentType: false
        });
    };

</script>


控制器:

public JsonResult Insert([Bind(Exclude = null)] ViewModel model, 
    IEnumerable<HttpPostedFileBase> files)
{
    //code removed for brevity
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

也许,这样的事情可以帮助你。

<input type="file" name="filesInput" id="filer_input" multiple="multiple" >

public JsonResult Insert(FormCollection formCollection)
{
    ...formCollection["filesInput"]
}

您可以尝试添加一个集合&#34; FilesInput&#34;在ViewModel上,让模型绑定器为您完成工作。这样,您只有Insert方法的模型参数。

答案 1 :(得分:0)

参考下面的链接在控制器中实现fileContent功能 http://www.railscook.com/recipes/rails-view-controller-ajax-response-example/