在js函数内部我创建了javascript对象,然后使用ajax将其发送到mvc控制器
var ab = { id: 100, name: "abc" }
$.ajax({
type: "POST",
url: "/home/dosomething",
dataType: "json",
contentType: "application/json",
data: JSON.stringify(ab),
success: function (result) {
$("#myDiv").html(result);
$("#showModal").modal("show");
},
error: function () {
alert("error!");
}
});
在服务器端我有
[HttpPost]
public ActionResult DoSomething(string ab)
{
... ab is always null
}
我猜测我应该使用控制器方法中预期的其他数据类型而不是字符串?
答案 0 :(得分:1)
您需要在操作方法中使用id和name
[HttpPost]
public ActionResult DoSomething(int id, string name)
{
//code
}
答案 1 :(得分:1)
试试这个:
var ab = { Id: 100, Name: "abc" }
$.ajax({
type: "POST",
url: "/home/dosomething",
dataType: "json",
data: JSON.stringify({ ab: ab }),
success: function (result) {
$("#myDiv").html(result);
$("#showModal").modal("show");
},
error: function () {
alert("error!");
}
});
[HttpPost]
public ActionResult DoSomething(YourClass ab)
{
. . .
}
public class YourClass
{
public int Id { get; set; }
public string Name { get; set; }
}
答案 2 :(得分:0)
创建一个JSON对象的类,将其挂钩为Serializable
[Serializable]
public class SomeClass
{
public int id { get; set; }
public string name { get; set; }
}
在您的控制器中,您现在可以接受:
[HttpPost]
public ActionResult DoSomething([FromBody] SomeClass someclass){
// code
}
答案 3 :(得分:0)
var ab = { id: 100, name: "abc" }
$.ajax({
type: "POST",
url: "/home/dosomething",
dataType: "json",
contentType: "application/json",
// what if you pass data like this
data: JSON.stringify({ab:ab}),
success: function (result) {
$("#myDiv").html(result);
$("#showModal").modal("show");
},
error: function () {
alert("error!");
}
});
答案 4 :(得分:0)
如果要将{id:100,name:“abc”}作为字符串发送到控制器,则需要将ajax调用中的数据更改为
数据:JSON.stringify({ab:ab}),
如果您想将id和名称作为单独的参数发送,请将控制器更改为
public ActionResult DoSomething(string id, string name)
{
}
和你的ajax调用数据
data: '{ "id":" 100 ","name":"abc" }',