Javascript 将表单和多个文件发布到Web API

Javascript 将表单和多个文件发布到Web API,javascript,c#,jquery,ajax,asp.net-web-api2,Javascript,C#,Jquery,Ajax,Asp.net Web Api2,我对WebAPI2.0的工作原理还不熟悉,但我开始掌握一些窍门。不过,我一直遇到的一个问题是如何发布一个表单以及用户上传到我的控制器的多个文件 我想我主要需要关于如何使用JavaScript或jquery和ajax发布所有正确值的帮助 以下是我的HTML的一小部分: <form id="CreateAnnouncementForm" class="form-horizontal"> <input type="hidden" name="announcementTypeI

我对WebAPI2.0的工作原理还不熟悉,但我开始掌握一些窍门。不过,我一直遇到的一个问题是如何发布一个表单以及用户上传到我的控制器的多个文件

我想我主要需要关于如何使用
JavaScript
jquery
ajax
发布所有正确值的帮助

以下是我的HTML的一小部分:

<form id="CreateAnnouncementForm" class="form-horizontal">
    <input type="hidden" name="announcementTypeID"/>

        <div class="row">
            <div class="col-md-12">
                <div class="form-group">
                    <label class="col-sm-2 control-label">Headline</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" name="headline" />
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">More Info</label>
                    <div class="col-sm-10">
                        <textarea class="form-control" name="moreInfo"></textarea>
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">Attachments</label>
                    <div class="col-sm-10">
                        <input type="file" name="Attachments" multiple/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>
现在,我认为最好是创建一个
ViewModel
,其中包含表单中所有值的
ViewModel
,并包含一个
IEnumerable
,用于用户可以在表单中上载的附件

但是,我遇到的问题是如何正确地将附件添加到表单中,以便它们正确地映射

我的
ViewModel
将如下所示:

public class AnnouncementCreateViewModel
{
    public AnnouncementViewModel Announcement { get; set; }
    public IEnumerable<HttpPostedFileBase> Attachments { get; set; }
}
公共类公告CreateViewModel
{
public Announcement视图模型公告{get;set;}
公共IEnumerable附件{get;set;}
}
当然,然后我需要更改表单中的名称以反映新模型


如果有人能帮助我将它们发布到我的控制器上,我将不胜感激,因为这是我唯一还在努力解决的问题。

因为这比我想象的要困难得多。我决定走另一条路

因为我已经在使用
剑道UI
框架,所以我现在使用
剑道上传
小部件来处理文件的上传。我让它异步地将文件上传到我的WebAPI控制器,然后在提交表单时有一个单独的操作来处理表单


当然,我也欢迎其他答案,这些答案可能可以通过在一次通话中发布所有数据来解决这个问题,但现在,这就可以了。

因为这比我想象的要困难得多。我决定走另一条路

因为我已经在使用
剑道UI
框架,所以我现在使用
剑道上传
小部件来处理文件的上传。我让它异步地将文件上传到我的WebAPI控制器,然后在提交表单时有一个单独的操作来处理表单


当然,我也欢迎其他答案,它们可能通过在一次调用中发布所有数据来解决此问题,但现在,这就可以了。

通过AJAX发布文件附件并不像您希望的那样简单,因为这会让您有所了解。asp.net mvc也有一个答案,通过AJAX发布文件附件并不像您希望的那样简单,因为这会给您一些想法。asp.net mvc也有一个答案
public class AnnouncementCreateViewModel
{
    public AnnouncementViewModel Announcement { get; set; }
    public IEnumerable<HttpPostedFileBase> Attachments { get; set; }
}