首页 > 解决方案 > 如何将 Request.Query/Form 对象作为 ASP.Net Core 5 中的一组“反序列化”参数传递给自定义方法?

问题描述

上下文

在 ASP.Net Core 5 控制器类中,如果我使用自定义命名参数编写 GET 处理程序方法,框架将尝试将 Query 或 Form 字典值与这些参数匹配。这适用于简单类型,例如字符串、数字和布尔值,但也适用于更复杂的类型,例如数组或自定义对象。例子:

[HttpPost]
public ActionResult PostFormData([FromForm] FormModel model) { ... }

public class FormModel {
    // Properties matching the form values
}

问题:

如何将 Asp.Net Core 的这一内置功能与不在 ControllerBase 类中的自定义处理程序方法一起使用?换句话说,给定一个HttpRequest对象和一个方法签名 ( MethodInfo),我如何使用动态解析的请求参数调用该方法,就像 ASP.Net 在控制器中那样?

代码:

HttpRequest request = ...; // E.g. from a HttpContext
MethodInfo handlerMethod = ...; // A method info from a custom class (not a Controller)

SomeAspNetHelperClass.InvokeMethodWithRequestParameters(request, method); // <-- ???

我意识到我可以自己实现这个,但我知道.Net 已经为它内置了工具,我不想重新发明轮子。

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

解决方案


推荐阅读