首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当试图将CaseController添加到Get时,"Type‘FormQuery’已经定义了一个具有相同参数类型的名为'Get‘的成员“

当试图将CaseController添加到Get时,"Type‘FormQuery’已经定义了一个具有相同参数类型的名为'Get‘的成员“
EN

Stack Overflow用户
提问于 2022-07-03 17:08:19
回答 1查看 39关注 0票数 0

我收到了一个错误,因为我为Get语句添加了一个FromQuery参数,以返回一个列表,而我已经有了一个Get语句,使用路由实现细节。有没有人在标准Get中遇到过路由(细节)和附加参数的问题?

我有一个api来了解一个案例的细节:

代码语言:javascript
复制
    [HttpGet("{id}")]
    public async Task<ActionResult<CaseDTO>> Get(string guid)
    {
         ...
    }

我有一个api来获得一个案例列表:

代码语言:javascript
复制
    [HttpGet]
    public async Task<ActionResult<CaseListDTO>> Get()
    {
        ...
    }

所有这些都很好,但我想在list函数中添加一个参数,以便在必要时提供返回其他字段的机会:

代码语言:javascript
复制
    [HttpGet]
    public async Task<ActionResult<CaseListDTO>> Get([FromQuery]string mode = "")
    {
        ...
    }

有没有其他人遇到过这种情况,是否有处理这种情况的最佳做法?

更新

我还没有完全解决这个问题,但我得到了其中的一部分。

以下是我所做的:

代码语言:javascript
复制
    [Route("{caseId:int}")]
    public async Task<ActionResult<OutboundCaseDTO>> Get(int caseId)

我在控制器/类级别有这样的信息:

代码语言:javascript
复制
[Route("api/v{version:apiVersion}/[controller]")]

当我遇到RoutePrefixAttribute的问题时,这个所以贴帮助了我。

我想有三种方法:

  1. 列出所有案件
  2. 列出具有附加属性的案例
  3. 使用guid获取案例细节
  4. 使用id获取案例详细信息

现在我有1,3和4。

通过提供的文件进行工作是有帮助的,但是有一个对RoutePrefix的引用使我偏离了方向,但我希望随着这一过程的发展,我需要回到它。

更多发现

我在运行时遇到了一个错误:

无法将约束引用'string‘解析为类型。使用'Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap‘注册约束类型

这让我找到了,我开始研究RoutHttpGet之间的关系,发现很有用。

路由文档在基于这个职位的基础上确实有所帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-07-03 17:31:25

你需要的是路由。因为您有两个名称相同(但签名不同)的方法,所以应用程序路由无法确定它应该调用哪一个。您可以通过指定路由来克服这一问题。这样,取决于您传递的URL类型(即请求的资源类型),它将该方法转发给适当的Get方法。

阅读更多关于路由的信息- https://learn.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

这是- ASP.NET网络API中多个GET方法的单控制器的潜在复制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72848449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档