c# - Asp Net core Controller URL参数

标签 c# asp.net-core asp.net-core-routing

我有像这样的Controller class:

namespace OptionsAPI.Controllers
{
    [Route("api/[controller]")]
    public class OptionsController : Controller
    {    
        HttpGet("{symbol}/{date}")]
        public IActionResult Chain(string symbol, string date)
        {
            DateTime quotedate = System.DateTime.Parse(date);
        }
    }
}

当我尝试通过这样的 URL 调用链函数时:

http://127.0.0.1:5000/api/options/Chain/symbol=SPX&date=2019-01-03T10:00:00

我收到此错误:

FormatException: The string 'symbol=SPX&date=2019-01-03T10:00:00' was not recognized as a valid DateTime. There is an unknown word starting at index '0

看起来“SPX”和“日期”被连接成一个字符串。调用此 URL 的正确方法是什么?

最佳答案

操作上给定的路由模板

[HttpGet("{symbol}/{date}")]

连同 Controller 上的模板

[Route("api/[controller]")]

期望

http://127.0.0.1:5000/api/options/SPX/2019-01-03T10:00:00

但是被调用的URI

http://127.0.0.1:5000/api/options/Chain/symbol=SPX&date=2019-01-03T10:00:00

将 URL 中的 Chain 映射到 symbol,其余部分映射到 date,解析时会失败。

要获取所需的 URI,模板需要类似于

[Route("api/[controller]")]
public class OptionsController : Controller {

    //GET api/options/chain?symbol=SPX&date=2019-01-03T10:00:00
    [HttpGet("Chain")]
    public IActionResult Chain(string symbol, string date) {
        //...
    }
}

引用Routing to controller actions in ASP.NET Core

引用Routing in ASP.NET Core

关于c# - Asp Net core Controller URL参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59621053/

相关文章:

c# - 如何从文本框上的COM端口写入数据?,C#MVC 4, Razor

c# - NullReferenceException 在启动时遇到 Owin .Net Core 2.0 - 设置?

multi-tenant - 如何在asp.net-core中实现 Multi-Tenancy 功能

c# - 如何阻止 [Required] 注释在被覆盖的字段上被继承?

c# - 如何装饰 MediatR 处理程序

javascript - 错误建议自动完成文本框 MVC 和 Javascript

c# - 使用 Fiddler 填充属性 [FromForm] 的参数

asp.net-core - ASP.NET Core 3.0 HttpContext.Current.Server.MapPath

c# - C# .NET 中 POST 的属性路由

c# - ASP.net Core API 中的路由