【问题标题】:Model doesn't bind in POST controller method .Net Core MVC模型不绑定在 POST 控制器方法.Net Core MVC
【发布时间】:2021-12-06 16:24:20
【问题描述】:

我有一个模型:

    public class CompanyFooterUpdateModel
    {
        public CompanyFooterUpdateModel(){}
        public Guid CompanyId { get; set; }
        public string FooterHtml { get; set; }
    }

控制器:

    public async Task<IActionResult> SaveFooter([FromBody] CompanyFooterUpdateModel model)
    {
       //.... do something in Company controller
    }

查看,用 axios 发帖:

function SaveCompanyFooter() {
    axios.post('@Url.Action("SaveFooter", "Company")',
        {
            model: {
                FooterHtml: window.HtmlEditor.getData(),
                CompanyId: "@Model.CompanyId"
            }
        }
    ).then(response => {
        // .... do something
    });
}

然后,我尝试了一切,[FromBody],其他任何东西,什么都没有…… 请解释一下,我做错了什么?

UPD1: 所以我也尝试过这样的事情:

axios.post('@Url.Action("SaveFooter", "Company")',
    {
        "FooterHtml": window.HtmlEditor.getData(),
        "CompanyId": "@Model.CompanyId"
    }
)

 public async Task<IActionResult> SaveFooter(Guid CompanyId, string FooterHtml)...

UPD2: Controller action screenshot

JS in View

【问题讨论】:

  • 他们有什么问题?它会撞到控制器吗?控制器动作输入参数是否为空?
  • @Serge in HttpContext.Request...Body 我可以通过调试器看到我的 POST 正文数据。但是,由于某种原因,模型是空的(使用默认值初始化)
  • 但是它触发了动作?
  • @Serge 是的,它触发了一个动作
  • 大部分是猜测,但请尝试从 JavaScript 对象中删除 model 属性并将该属性值作为整个对象。

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


【解决方案1】:

尝试从 javascript 中删除 "

axios.post('@Url.Action("SaveFooter", "Company")',
    {
        FooterHtml: window.HtmlEditor.getData(),
        CompanyId: "@Model.CompanyId"
    }
)

或者尝试添加json头


axios.post('@Url.Action("SaveFooter", "Company")',
    {
        FooterHtml: window.HtmlEditor.getData(),
        CompanyId: "@Model.CompanyId"
    }
),
 {
    'Content-Type': 'application/json'
  })
  .then((response) => {
.....

并使用此操作

public async Task<IActionResult> SaveFooter([FromBody] CompanyFooterUpdateModel model)
    {
       //.... do something in Company controller
    }

【讨论】:

  • 请检查UPD2
  • 明天试试 :) 谢谢
  • 所以,你的回答对我有帮助。谢谢你。奇怪,那个项目是从 .net mvc Framework 迁移到 .net core 5 mvc。并且使用“旧版本”它可以正常工作。奇怪。
  • 不客气!
猜你喜欢
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2020-11-05
  • 2021-09-05
相关资源
最近更新 更多