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:
选项。