我刚刚将项目转换为.net core,更改之一是我现在只能将1 [FromBody]属性传递给控制器操作。以前我是像这样将JSON对象传递到主体中的:
{
property1: 1,
property2: 2
}
并且可以在控制器中接收到这两个属性,如下所示:
public doSomething([FromBody]int property1, [FromBody]int property2)
现在我必须为通过主体传递的参数创建一个新类:
public class DoSomethingParams {
public int property1;
public int property2;
}
public doSomething([FromBody]DoSomethingParams bodyParams)
这会创建更多代码,尤其是当我必须传递10个或更多参数进行调用时,这对我来说效率很低。
在Javascript中有一些解构操作,我可以使用一个上述对象,如下所示:let property1 = {property1};
。 C#中有类似的替代方法吗?我读到有关tuple deconstructing in C# v7的信息,但我不太确定它是否对我有帮助(例如,将[FromBody](int property1, int property2)
作为参数添加不起作用。(标识符预期错误))
除了为其创建类骨架之外,还有更有效的方法来解构我要传递的JSON对象吗?感谢您的帮助!
您需要创建一个自定义模型提供程序来实现。检查此程序包是否仅执行以下操作:https://github.com/m6t/M6T.Core.TupleModelBinder
您只需要在第一个位置将自定义活页夹添加到活页夹提供程序中:
services.AddMvc(options =>
{
options.ModelBinderProviders.Insert(0, new TupleModelBinderProvider());
})
然后您将可以使用元组解构:
public doSomething((int property1, int property2, string other) bodyParams) {
// bodyParams.property1
// bodyParams.property2
// bodyParams.other
}