.NET Core MVC POST动作不反序列化为模型

时间:2017-09-05 12:18:29

标签: c# asp.net-core-mvc

我正在尝试使我的.net核心MVC网站接收通过javascript从视图发送的JSON。可悲的是,似乎模型没有填充数据。

[HttpPost]
public ActionResult AddSubtitles(AddSubtitleSettingsModel model)
{
    /* do things and save to database */
    return RedirectToAction("Subtitling");
}

我的模特:

public class AddSubtitleSettingsModel
{
    public HashSet<string> from { get; set; }
    public HashSet<string> to { get; set; }
    public decimal startupRateLessThanOneMinute { get; set; }
    public decimal startupRateBetweenOneAndThreeMinutes { get; set; }
    public decimal pricePerSubtitle { get; set; }
    public decimal defaultRateTranslators { get; set; }
}

请求发送到POST操作: Request

我可以告诉模型没有填写,因为我在操作中放置了一个断点并检查了模型,并且所有内容都为null / empty: Model empty

这是我从javascript发送请求的方式:

let fromValues: any = fromLanguages.getValue();
let toValues: any = toLanguages.getValue();
var data = {
    from: fromValues.map((l: any) => l.value),
    to: toValues.map((l: any) => l.value),
    startupRateLessThanOneMinute: Number($('#srLt1m').val()),
    startupRateBetweenOneAndThreeMinutes: Number($('#stBt13m').val()),
    startupRateBetweenThreeAndFiveMinutes: Number($('#stBt35m').val()),
    pricePerSubtitle: Number($('#pPS').val()),
    defaultRateTranslators: Number($('#dRT').val())
}

fetch('/Settings/AddSubtitles', {
    method: 'post',
    body: JSON.stringify(data)
}).then((response: any) => {
    console.log(response);
});

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:4)

尝试将[FromBody]添加到您的方法

[HttpPost]
public ActionResult AddSubtitles([FromBody]AddSubtitleSettingsModel model)
{
    /* do things and save to database */
    return RedirectToAction("Subtitling");
}