Asp.net 将值从视图传递到控制器不会';行不通
我试图将一个变量从我的视图发送到一个控制器,以便在不同的视图中使用它。我已经读了几个例子如何做到这一点,但我不能让它工作 这是我的模型:Asp.net 将值从视图传递到控制器不会';行不通,asp.net,json,ajax,asp.net-mvc,model-binding,Asp.net,Json,Ajax,Asp.net Mvc,Model Binding,我试图将一个变量从我的视图发送到一个控制器,以便在不同的视图中使用它。我已经读了几个例子如何做到这一点,但我不能让它工作 这是我的模型: public class GameResultsViewModel { public int p { get; set; } } 我的控制器操作: [HttpPost] public IActionResult EndScreen(GameResultsViewModel results) { return null; } Javascri
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()" />
当我单击按钮时,它将转到操作,但变量始终为0。有什么我遗漏的吗?从发布的数据中删除
结果
{ results: model }
MVC绑定到模型的属性名称。你可以在这里了解更多
你把你的行动改为
[HttpPost]
public IActionResult EndScreen(GameResultsViewModel results, string foo)
然后您将包括结果
var model = { p: 3 };
data: JSON.stringify({ results: model, foo: "bar" })
从发布的数据中删除结果
{ results: model }
MVC绑定到模型的属性名称。你可以在这里了解更多
你把你的行动改为
[HttpPost]
public IActionResult EndScreen(GameResultsViewModel results, string foo)
然后您将包括结果
var model = { p: 3 };
data: JSON.stringify({ results: model, foo: "bar" })
我将其更改为您的版本,但控制器中的p值仍然为0。这似乎是JSON.stringify(model)行的一个问题。也许它不会在发送json后将其转换为我的viewmodel。如果我像这样传递两个变量:data:{results:JSON.stringify(model),foo:“foo”},那么foo变量被发送的很好,但是results变量不是。将你最近的尝试附加到你的问题上。try-data:JSON.stringify({p:3,foo:“bar”)你能像这样更改{p:3,foo:“bar”}吗,但控制器中的p值仍然为0。这似乎是JSON.stringify(model)行的一个问题。也许它不会在发送json后将其转换为我的viewmodel。如果我像这样传递两个变量:data:{results:JSON.stringify(model),foo:“foo”},那么foo变量被发送的很好,但是results变量不是。将你最近的尝试附加到你的问题上。try-data:JSON.stringify({p:3,foo:“bar”)你能像这样更改{p:3,foo:“bar”}吗,
并删除contentType:
选项。您只需要数据:{p:3},
并删除contentType:
选项。