gpt4 book ai didi

c# - 将多个对象作为参数传递给 mvc 6 操作

转载 作者:太空狗 更新时间:2023-10-30 00:48:59 27 4
gpt4 key购买 nike

我有一个运行良好的 MVC 5 项目,我需要将该项目迁移到带有 .net 核心的 MVC 6。在设法调整一切正常工作后,我遇到了一个问题:我的许多操作都接受超过 1 个对象作为参数。 MVC 5 使用的模型绑定(bind)器对此没有问题,但 MVC 6 似乎在此类操作的所有参数中都放置了 null,我猜这是 MVC 和 WebAPI 统一的一部分。我的问题是它周围是否有没有添加另一个请求包装器对象模型库。

例如:

    [HttpPost]
public ActionResult GetVersionData(OvlEnvironment environment, Pipeline pipeline)
{
BL.SetEnviromentVersion(pipeline, environment);
return PartialView("_Version", environment);
}

在mvc 5项目中ajax请求包含表单中的json数据

{ "environment" : {*Data...*},
"pipeline" : {*Data...*}
}

被接受了。在 mvc 6 中,响应同一请求的两个对象都显示为空。
谢谢

最佳答案

您必须向 ASP.NET Core MVC Framework 提供提示,绑定(bind)到模型的数据可以在 post 请求的正文中找到。这是通过 [FromBody] attribute 完成的.

[FromBody]: Use the configured formatters to bind data from the request body. The formatter is selected based on content type of the request.

按照设计,不可能将多个参数绑定(bind)到一个 JSON 源,如描述的那样 here .为了避免额外的模型类,您可以像这样使用通用 JObject:

[HttpPost]
public ActionResult GetVersionData([FromBody] JObject data)
{
var environment = data["environment"].ToObject<OvlEnvironment>();
var pipline = data["pipeline"].ToObject<Pipeline>();

BL.SetEnviromentVersion(pipeline, environment);
return PartialView("_Version", environment);
}

关于c# - 将多个对象作为参数传递给 mvc 6 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41922534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com