AJAX 参数到 ASP .NET Core 2 控制器操作
AJAX paramter to ASP .NET Core 2 Controller Action
我想将 AJAX 参数传递给 ASP .Net Core 2 中的 MVC 控制器。
这是我试过的:
function getMatchesFromChampionshipAsync(championship) {
console.log(championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: { "championship": championship },
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
success: function (response) {
alert(response)
}
})
}
我确定参数championship
是正确的(我也尝试记录它),但是Controller总是收到null
。
这是Controller Action Method代码:
[HttpPost]
public IActionResult Matches([FromBody] string championship) {
return Json(championship);
}
浏览器也会提醒 null
。
我还阅读了有关它的其他问题,但没有人工作。
尝试添加繁体:true
function getMatchesFromChampionshipAsync(championship) {
console.log(championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: { "championship": championship },
traditional: true,
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
success: function (response) {
alert(response)
}
})}
我使用 Class 和一个名为 Championship
的 属性 解决了问题:
public class Value {
public String Championship { get; set; }
}
并在 Action 方法中将其用作模型:
[HttpPost]
public IActionResult Matches([FromBody] Value ch) {
return Json(ch.Championship);
}
不知道有没有更简单的方法
尝试删除 ajax 语句中的 "contentType" 限定符,或者简单地将参数包装在 JSON.stringify 中,即。 data:JSON.stringify(冠军).
最近,我真的很喜欢在 javascript 中使用 formData 对象将数据从 xhr/ajax 传递到 post 到 MVC 操作。这是一个例子:
var nameFormDataHere = new FormData();
nameFormDataHere.append("championship", championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: nameFormDataHere,
dataType: "json"
processData: false,
contentType: false,
success: function (response) {
alert(response);
}
});
就像您上面的示例一样,您需要创建一个带有 属性 的模型(class),并在 ajax 的操作上方添加数据注释 [HttpPost] posting to,以新模型(class)作为参数进入动作。这是来自您上面的示例:
型号:
public class Value{
public String Championship { get; set; }
}
操作:
[HttpPost]
public IActionResult Matches(Value ch) {
return Json(ch.Championship);
}
我已经用过好几次了,从来没有用过 [FromBody] 注释。
我想将 AJAX 参数传递给 ASP .Net Core 2 中的 MVC 控制器。
这是我试过的:
function getMatchesFromChampionshipAsync(championship) {
console.log(championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: { "championship": championship },
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
success: function (response) {
alert(response)
}
})
}
我确定参数championship
是正确的(我也尝试记录它),但是Controller总是收到null
。
这是Controller Action Method代码:
[HttpPost]
public IActionResult Matches([FromBody] string championship) {
return Json(championship);
}
浏览器也会提醒 null
。
我还阅读了有关它的其他问题,但没有人工作。
尝试添加繁体:true
function getMatchesFromChampionshipAsync(championship) {
console.log(championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: { "championship": championship },
traditional: true,
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
success: function (response) {
alert(response)
}
})}
我使用 Class 和一个名为 Championship
的 属性 解决了问题:
public class Value {
public String Championship { get; set; }
}
并在 Action 方法中将其用作模型:
[HttpPost]
public IActionResult Matches([FromBody] Value ch) {
return Json(ch.Championship);
}
不知道有没有更简单的方法
尝试删除 ajax 语句中的 "contentType" 限定符,或者简单地将参数包装在 JSON.stringify 中,即。 data:JSON.stringify(冠军).
最近,我真的很喜欢在 javascript 中使用 formData 对象将数据从 xhr/ajax 传递到 post 到 MVC 操作。这是一个例子:
var nameFormDataHere = new FormData();
nameFormDataHere.append("championship", championship);
$.ajax({
url: "/Bets/Matches",
type: "POST",
data: nameFormDataHere,
dataType: "json"
processData: false,
contentType: false,
success: function (response) {
alert(response);
}
});
就像您上面的示例一样,您需要创建一个带有 属性 的模型(class),并在 ajax 的操作上方添加数据注释 [HttpPost] posting to,以新模型(class)作为参数进入动作。这是来自您上面的示例:
型号:
public class Value{
public String Championship { get; set; }
}
操作:
[HttpPost]
public IActionResult Matches(Value ch) {
return Json(ch.Championship);
}
我已经用过好几次了,从来没有用过 [FromBody] 注释。