在路由参数中拥有自己的枚举,可能吗?

时间:2019-01-12 15:16:13

标签: c# asp.net-core enums

我有一个简单的Api功能:

// POST: api/Cultivation/Sow/1/5
[HttpGet("Sow/{grain}/{id}")]
public IActionResult Sow(Grain grain, int id) { }

我的枚举看起来像这样:

public enum Grain
{
    None,
    Rice,
    Corn,
    Oats
}

我的问题是,是否可以从Route获得Grain或任何枚举?是的时候怎么办?

如果否,如何通过int优雅地“查找”枚举,而不使用if语句等?因为如果myWebapi无法接受enums,则很容易通过简单的int

2 个答案:

答案 0 :(得分:1)

public enum EnumReviewStatus
{
    Overdue = 4,
}

public IActionResult Index(EnumReviewStatus? statusFilter = null)

url Index?statusFilter =过期有效

答案 1 :(得分:1)

请参阅此文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-2.2#use-routing-middleware

希望这会有所帮助。

您可以按显示的那样添加网址

app.UseMvc(routes =>
{
    routes.MapRoute("default", "{controller=Home}/{action=Index}/{grain=somedefault}/{id?}");
});
  

大括号({...})中的标记定义的路由参数为   如果路由匹配,则绑定。您可以定义多个路线   路径段中的参数,但必须用文字分隔   值。例如,{controller = Home} {action = Index}不是有效的   路由,因为{controller}和   {行动}。这些路由参数必须具有名称,并且可能具有   指定了其他属性。