【问题标题】:Send Multiple objects with Ajax to the ASP.NET MVC controller使用 Ajax 将多个对象发送到 ASP.NET MVC 控制器
【发布时间】:2017-01-24 15:30:57
【问题描述】:

我有一个 ViewModel,其中包含 ExternalProjectViewModelCertificateUniverSityViewModelCertificateInstitutionsViewModel 的三个集合。

CreateFreelancerProfileViewModel.cs

public class CreateFreelancerProfileViewModel : BaseViewModel
{
    // More ...
   public List<ExternalProjectViewModel> ExternalProjects { get; set; }   

   public List<CertificateUniverSityViewModel> CertificateUniverSitys { get; set; }

   public List<CertificateInstitutionsViewModel> CertificateInstitutions { get; set; }

}

我的 Ajax 代码:

            $('#Controller').on('click','#SaveProfile',

            function() {

                debugger;
                var CertificateInstitutions = 
                    JSON.parse(localStorage.getItem("CertificateInstitutionsListLocal"));

                var CertificateUniverSitys = 
                    JSON.parse(localStorage.getItem("CertificateUniverSitysListLocal"));

                var ExternalProjects = 
                    JSON.parse(localStorage.getItem("ExProjectListLocal"));

                $.ajax({
                    url : '@Url.Action(MVC.Freelancer.Profile.CreatePrfile())',
                    method: "POST",
                    data: {
                        ExternalProjects,
                        CertificateUniverSitys,
                        CertificateInstitutions
                    }
                });


            });

当我想向控制器发送对象时,首先从LocalStorage 获取它 并在获取后将其发送到控制器操作:

 public virtual ActionResult CreatePrfile(CreateFreelancerProfileViewModel viewModel)

当我看到viewModel Values Show My Objects Count 那是 2 但 Objects Properties 为 null.so 我的服务器对象属性名称与客户端对象属性名称相同。

本地存储值

[{"ExternalProjects":{"Name":"wqeqwe","Body":"wqewqe","Url":‌​"wqewqe"}}]

[{"CertificateUniverSity":{"Name":"sad","Description":"sadas‌​","DateOfGets":"sad"‌​,"CertificateType":"‌​2","Field":"sadasd",‌​"UniName":"sad","Cer‌​tificateUniverSityLe‌​vel":"2"}}]

【问题讨论】:

  • 在浏览器中捕获该发布请求并查看
  • @Steve 我在客户端对象属性中完成这项工作

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


【解决方案1】:

您可以将它们作为 JSON 有效负载发送:

$.ajax({
    url : '@Url.Action(MVC.Freelancer.Profile.CreatePrfile())',
    method: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({
        externalProjects: ExternalProjects,
        certificateUniverSitys: CertificateUniverSitys,
        certificateInstitutions: CertificateInstitutions
    }),
    success: function(result) {
        alert('data sent successfully');
    }
});

这假定您从这 3 个变量的 localStorage 中获得的实例表示其中包含相应对象的 javascript 数组。

【讨论】:

  • 我试试你的代码,但它没有改变
  • 您能否显示发送到服务器的确切有效负载?我怀疑您从本地存储中获得的ExternalProjectsCertificateUniverSitysCertificateInstitutions 不代表javascript 数组。
  • 我猜我们 case 应该匹配 class 属性。尝试使用ExternalProjects: ExternalProjects, 而不是externalProjects: ExternalProjects,(这只是在黑暗中拍摄)。
  • 不,JSON 序列化程序会正确处理大小写。
  • @DarinDimitrov [{"ExternalProjects":{"Name":"wqeqwe","Body":"wqewqe","Url":"wqewqe"}}]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多