我正在尝试将视图中的变量发送到控制器,以便我可以在不同的视图中使用它。我已经阅读了几个如何做到这一点的例子,但是我无法让它发挥作用。
这是我的模特:
public class GameResultsViewModel
{
public int p { get; set; }
}
我的控制器操作:
[HttpPost]
public IActionResult EndScreen(GameResultsViewModel results)
{
return null;
}
Javascript功能:
function submitResults() {
var model = new Object();
model.p = 3;
jQuery.ajax({
type: "POST",
url: "@Url.Action("EndScreen")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ results: model }),
success: function() {
alert("yay");
},
failure: function() {
alert("nope");
}
});
}
我从一个简单的输入中调用这个函数:
<input type="button" value="Click" onclick="submitResults()" />
当我点击按钮时,它会转到Action,但变量总是为0.是否有我遗漏的东西?
答案 0 :(得分:0)
从发布的数据中删除results
。
{ results: model }
MVC绑定到模型的属性名称。您可以在此处详细了解binding。
function submitResults() {
var model = { p: 3 };
jQuery.ajax({
type: "POST",
url: "@Url.Action("EndScreen")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(model),
success: function() {
alert("yay");
}
});
}
你是否已将行动改为
[HttpPost]
public IActionResult EndScreen(GameResultsViewModel results, string foo)
然后你会加入results
var model = { p: 3 };
data: JSON.stringify({ results: model, foo: "bar" })