简体   繁体   English

将JSON数据传递给操作方法

[英]Pass JSON data to action method

I am trying to pass JSON data from ajax call to my action method - 我正在尝试将JSON数据从ajax调用传递给我的操作方法-

Ajax call - 

$.ajax({
         type: "POST",
         url: '/ProjectList/getProjects',
         dataType: "json",
         contentType: "application/json; charset=utf-8",
         data: JSON.stringify(modelData),
         success: function (data) {
                        alert("Testing");
         }
      });

Model - 型号-

EbitModel.cs

public class EbitModel
{
    public string ProgramName { get; set; }
    public string ProjectName { get; set; }
    public string SubprojectName { get; set; }
}

action method of Controller - 控制器的动作方法-

ProjectListController.cs


    [HttpPost]
    public ActionResult getProjects(List<EbitModel> modelData)
    {
        return null;
    }

But I am getting null here in modelData in this action method. 但是我在这个动作方法的modelData中得到的是null。

Is there anything am I missing here? 我在这里想念什么吗?

Edit - 编辑-

JSON data in ModelData as - ModelData中的JSON数据为-

[{"ProgramName":"South East","ProjectName":"XYZ","SubprojectName":"LMZ"},{"ProgramName":"South East","ProjectName":"ACB","SubprojectName":"LMZa"}]

you have to pass modelData along with Json passing to controller. 您必须将modelData和Json一起传递给控制器​​。
Try following code. 尝试以下代码。

var jsonString = [{"ProgramName":"South East","ProjectName":"XYZ","SubprojectName":"LMZ"},{"ProgramName":"South East","ProjectName":"ACB","SubprojectName":"LMZa"}];
var jsonData = JSON.parse('{"modelData":'+jsonString +'}')

$.ajax({
    type: "POST",
    url: '/ProjectList/getProjects',
    dataType: "json",
     contentType: "application/json; charset=utf-8",
     data: jsonData,
     success: function (data) {
        alert("Testing");
     }
});

Create a variable to hold the model and pass this variable to ajax data 创建一个变量来保存模型并将该变量传递给ajax数据

var modelHolder = { "Value": @Model.Value }
$.ajax({
         type: "POST",
         url: '/ProjectList/getProjects',
         dataType: "json",
         contentType: "application/json; charset=utf-8",
         data: modelHolder,
         success: function (data) {
                        alert("Testing");
         }
      });

I found some work around for this - 我为此找到了一些解决方法-

var modelData = { "modelData": dt };
$.ajax({
          type: "POST",
          url: '/ProjectList/getProjectsFromEbit',
           dataType: "html",
           contentType: "application/json; charset=utf-8",
           data: JSON.stringify(modelData),
            success: function (data) {

           },
           error: function (data) {

                    }

                });

in controller - i took that string and deserialised it 在控制器中-我拿了那个字符串并将其反序列化

public ActionResult getProjectsFromEbit(string modelData)
    {
        var systemOutputList = new List<EbitModel>();
        systemOutputList = JsonConvert.DeserializeAnonymousType(modelData, systemOutputList);
        return PartialView("_getProjects",systemOutputList);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM