Javascript 使用ajax将FormData发送到ASP.NET MVC控制器

Javascript 使用ajax将FormData发送到ASP.NET MVC控制器,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我试图将FormData()发送到ASP.NET MVC控制器,但相同的数据为空。ExternalProjects,certificateUniversity,… $('#Controller')。在('click','#SaveProfile',function()上{ 调试器; var CertificateInstitutions=JSON.parse(localStorage.getItem(“CertificateInstitutionsListLocal”); var Certifi

我试图将
FormData()
发送到ASP.NET MVC控制器,但相同的数据为空。
ExternalProjects,certificateUniversity,…

$('#Controller')。在('click','#SaveProfile',function()上{
调试器;
var CertificateInstitutions=JSON.parse(localStorage.getItem(“CertificateInstitutionsListLocal”);
var CertificateUniverSitys=JSON.parse(localStorage.getItem(“CertificateUniverSitysListLocal”);
var ExternalProjects=JSON.parse(localStorage.getItem(“ExProjectListLocal”);
var soical={
GithubId:$('#GithubId').val(),
StackowerflowId:$('#StackowerflowId').val(),
TweiterId:$('#TweiterId').val()
}
var SkillList=$('select.tagit-hiddenSelect:selected').map(函数(){
返回此.value;
}).get();
变量形式=$(“#CreateProfileForm”);
var token=$('input[name=“\uu RequestVerificationToken”]”,form.val();
var file_data=$(“#Image”).prop(“文件”)[0];
var fd=新FormData();
fd.append(“isFirst”,true);
附加(“令牌”,令牌);
fd.append(“图像”,文件\数据);
fd.追加(“soical”,soical);
fd.追加(“技能列表”,技能列表);
fd.追加(“外部项目”,外部项目);
fd.追加(“CertificateUniverSitys”,CertificateUniverSitys);
fd.附加(“认证机构”,认证机构);
$.ajax({
url:“@postrl”,
方法:“张贴”,
contentType:false,
processData:false,
数据:fd
});
});
公共虚拟异步任务CreatePrfile(CreateFreedorProfileViewModel视图模型,bool isFirst,HttpPostedFileBase映像)
公共类CreateFreedorProfileViewModel:BaseViewModel
{
#区域搭配
公共ExternalProjectViewModel[]ExternalProjects{get;set;}
public CertificateUniverSityViewModel[]CertificateUniverSitys{get;set;}
公共证书机构viewmodel[]证书机构{get;set;}
公共SoicalViewModel Soical{get;set;}
#端区
}

添加
ExternalProjects
for
循环:

 var fd = new FormData();

 for (var i = 0; i < ExternalProjects.length ; i++) 
     {
        fd.append("ExternalProjects["+i+"].Name",ExternalProjects[i].Name);
        fd.append("ExternalProjects["+i+"].Body",ExternalProjects[i].Body);
        fd.append("ExternalProjects["+i+"].Url",ExternalProjects[i].Url);
     }
var fd=new FormData();
对于(var i=0;i
您不能
.append()
将对象附加到
FormData
-您需要单独附加每个属性(并且您还没有显示您的模型,所以我们甚至不知道您试图绑定到什么)@StephenMuecke我添加了模型。然后您需要
fd.append(“soical.GithubId”,“$”(GithubId').val())fd.append(“ExternalProjects[0].somePropertyName”,someValue)
etcif use
fd.append(“ExternalProjects[0].somePropertyName”,someValue)我的代码太大了,你没有更好的方法吗?谢谢@StephenMuecke。没有别的办法了,但是很难理解你在这里做什么。首先,您已经使用强类型的
HtmlHelper
方法正确地生成了视图,然后它只是
var formdata=new formdata($('form').get(0))
序列化所有输入(有关更多详细信息,请参阅。