[英]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.