在mvc3中通过json发送多个模型

时间:2012-01-09 18:20:17

标签: json asp.net-mvc-3 model-binding

无法找到问题的完全匹配(找到一些类似的帖子)..

如何通过JSON将多个模型发送到MVC3控制器,例如具有以下参数:

public JsonResult Add(Project pr, List<Modules> mod)
{
}

尝试了以下技术,但没有效果

function AddModules() {

     var pname = $("#ProjectName").val();



     var data = new Array();


     var modules  = new Array();

     $("#ModuleTable tr").each(function () {

 var row =

{
    "ModuleName": $(this).find(".moduleName").val(),
    "ModuleDesc": $(this).find(".moduleDesc").val(),
    "ModuleSize": $(this).find(".moduleSize").val(),
    "StartDate": $(this).find(".startDate").val(),
    "ModuleId": "",
    "ProjectName": pname
}

 modules.push(row);

 });


     var project =
     {
     "ProjectName":                 $("#ProjectName").val(),
     "ProjectDescription" :         $("#ProjectDescription").val(),
     "StartDate"          :         $("#ProjectStartDate").val(),
     "ModuleName"         :         modules

 }

 data.push(project);

                        $.ajax({
                            url: "AddProject",
                            data: JSON.stringify(data),
                            type: "post",
                            contentType: "application/json; charset = utf-8",
                            dataType: "json",

                            success: function (status) {
                                alert(status);
                            }

                        });

                    }

项目类还包含List类型的Module类。

1 个答案:

答案 0 :(得分:1)

您正在向服务器发送一串JSON,因此您有类型差异。尝试这样的事情:

客户端

var myFunction = function(){
  var projectName = $("#ProjectName").val();
  var projectDescription = $("#ProjectDescription").val();

  $.post("[URL TO YOUR CONTROLLER]",{pName : projectName, pDescription: projectDescription},function(response){
    alert(response);
  });    
};

服务器端

   public ActionResult MyActionResult(FormCollection fc)
        {
            var projectName = fc["pName"];
var projectDescription = fc["pDescription"];

var result = projectName + " hase been posted!";

            return Content(result);
        }
祝你好运!