HttpGetAttribute不包含带有1个参数的构造函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpGetAttribute不包含带有1个参数的构造函数相关的知识,希望对你有一定的参考价值。

目前我正在使用Microsoft MVC框架开发web api。在他们的文档中我读了以下(https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1):

为方便起见,属性路由通过将标记括在方括号([,])中来支持令牌替换。标记[action],[area]和[controller]将替换为定义路径的操作中的操作名称,区域名称和控制器名称的值。在此示例中,操作可以匹配URL路径,如注释中所述:

[Route("[controller]/[action]")]
public class ProductsController : Controller
{
    [HttpGet] // Matches '/Products/List'
    public IActionResult List() {
        // ...
    }

    [HttpGet("{id}")] // Matches '/Products/Edit/{id}'
    public IActionResult Edit(int id) {
        // ...
    }
}

令牌替换发生在构建属性路由的最后一步。以上示例的行为与以下代码相同:

public class ProductsController : Controller
{
    [HttpGet("[controller]/[action]")] // Matches '/Products/List'
    public IActionResult List() {
        // ...
    }

    [HttpGet("[controller]/[action]/{id}")] // Matches '/Products/Edit/{id}'
    public IActionResult Edit(int id) {
        // ...
    }
}

但是,每当我尝试使用[HttpGet("my/route")]属性时,visual studio都会告诉我“HttpGetAttribute不包含带有1个参数的构造函数”。我已经读过我应该使用包管理器安装Microsoft.AspNet.WebApi.WebHost,但错误仍然存​​在。

我的问题是,我怎样才能开始使用正确的属性?我在Visual Studio中安装软件包并不是很有经验。

在此先感谢您的帮助。

答案

只有ASP.NET Core具有Http [Verb]属性的属性路由。如果您有ASP.NET Framework项目,则应使用RouteAttribute

ASP.Net核心:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1

ASP.NET框架:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

另一答案

试试这个

[RoutePrefix("Products")]
public class ProductsController : Controller
{
    [HttpGet]
    [Route("api/List")]
    public IActionResult List() {
        // ...
    }

    [HttpGet]
    [Route("api/Edit/{id}")]
    public IActionResult Edit(int id) {
        // ...
    }
}
另一答案

我相信你会混淆属性。

[HttpGet]装饰动作很好,但是这个属性不带路由参数。

你的行动可能如下:

[HttpGet]
[Route("{id"}]
public IActionResult Edit(int id) {
      // ...
}

以上是关于HttpGetAttribute不包含带有1个参数的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 打开带有提供参数的子报告

“表达式树可能不包含使用可选参数的调用或调用”在带有拆分字符串实体的 LINQ 表达式中?

Hangfire:该类型不包含带有签名的方法

EventArgs 不包含采用 1 个参数的构造函数

CS1729 'MyNavigationPage' 不包含采用 1 个参数的构造函数 --> 在 Visual Studio 2019 社区版中

mongoose - 如何使用带有请求参数数组的 $in 进行 .find()现在它只返回空数组