【问题标题】:Parameters are not binding in post method to Model in .net core 3.1post方法中的参数未绑定到.net core 3.1中的模型
【发布时间】:2021-09-05 21:29:10
【问题描述】:

我在以前的框架中从 .net 4.8 迁移到 .net core 3.1,这个帖子调用工作正常,但在 .net core 模型中没有绑定。虽然控制器方法被调用,但所有参数均为空。 也附上日志。

在请求中找不到名称为“parameters.configRowLimit”的值,用于类型为“System.Int32”的绑定属性“Project.BusinessObjects.Areas.Reports.ViewParameters”。“configRowLimit”

它适用于每个属性。我不明白为什么它在查看parameters.configRowLimit 而从前端它在parameters.ViewParameters.configRowLimit 内

这是我的前端参数。

让 ViewParameters = {};

    ViewParameters = {
      SqlQuery: SqlQuery,
      ViewObject: ViewObject,
      RowCount: totalCount,
      MaximumRowLimit: maximumRowLimit,
      AppInstanceID: $('#AppInstanceId').val(),
      FileName: metricName
    };

    let params = {};
    params = {
      ViewParameters: ViewParameters,
      Metrics: obj,
      fileTypes: value
    };
    

    let body = { parameters: params };
    let options = ({ headers: headers });
    return this.http.post(this._controllerMethod, body, options)`enter code here`

这是.net核心控制器方法

  [FileDownload, DeleteFile]
    public ActionResult DownLoadQuery([FromBody] CurrentMetricDownload parameters)

模型 CurrentMetricDownload

 public class CurrentMetricDownload
    {
        public FileTypes fileTypes { get; set; }
        public ExportFile File { get; set; }
        public TreeMetrics Metrics { get; set; }
        public ViewParameters Viewparameters { get; set; }
    }

【问题讨论】:

    标签: c# angular asp.net-core asp.net-core-3.1 model-binding


    【解决方案1】:

    如果您将parameters 指定为角度参数的名称,那么在您的模型中,您也需要使用此名称的属性,但您的模型名称是parameters。所以你需要直接将参数分配给body

    let body = params;
    let options = ({ headers: headers });
    return this.http.post(this._controllerMethod, body, options)
    

    【讨论】:

    • 谢谢,直接分配就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2021-06-30
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多