将值从View传递到Controller不起作用

时间:2016-05-07 19:55:58

标签: 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;
}

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.是否有我遗漏的东西?

1 个答案:

答案 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" })