AJAX参与ASP .NET Core 2 Controller Action

时间:2017-11-06 16:46:15

标签: c# asp.net ajax asp.net-core-2.0

我想将一个AJAX参数传递给ASP .Net Core 2中的MVC控制器。

这是我试过的:

championship

我确定参数null是正确的(我也尝试记录它),但控制器总是收到[HttpPost] public IActionResult Matches([FromBody] string championship) { return Json(championship); }
这是控制器操作方法代码:

null

浏览器还会提醒CREATE TABLE [tblExample]( [ExampleID] [int] IDENTITY(1,1) NOT NULL, [WordsAndStuff] [nvarchar](max) NOT NULL, [Active] [bit] NOT NULL 。 我也读过有关它的其他问题,但没人工作。

4 个答案:

答案 0 :(得分:4)

我解决了使用名为Championship的单个属性的类:

public  class Value {
        public String Championship { get; set; }
}

并在Action方法中将其用作模型:

[HttpPost]
public IActionResult Matches([FromBody] Value ch) {
    return Json(ch.Championship);
}

我不知道是否有更简单的方法。

答案 1 :(得分:1)

最近,我真的很喜欢在javascript中使用formData对象将数据从xhr / ajax传递到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);
    }
});

就像上面的示例一样,您将需要创建一个具有属性的模型(类),并将数据注释[HttpPost]置于ajax要发布到的操作上方,并将新模型(类)作为参数那个行动。这来自上面的示例:

型号:

    public  class Value{
        public String Championship { get; set; }
    }

操作:

    [HttpPost]
    public IActionResult Matches(Value ch) {
        return Json(ch.Championship);
    }

我已经使用过几次,并且从不需要使用[FromBody]批注来起作用。

答案 2 :(得分:0)

尝试删除ajax语句中的“ contentType”限定符,或仅将参数包装在JSON.stringify中。数据:JSON.stringify(championship)。

答案 3 :(得分:-1)

尝试添加传统: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)
    }
})}