代码之家  ›  专栏  ›  技术社区  ›  michasaucer

在路由参数中拥有枚举,是否可能?

  •  0
  • michasaucer  · 技术社区  · 7 年前

    我有一个简单的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
    }
    

    我的问题是,有没有可能 Grain 或者路由中的枚举?是的时候,怎么做?

    如果没有,如何优雅地通过int“查找”枚举,而不使用if语句等?因为如果MyWebAPI不能 enums ,简单易行 int

    2 回复  |  直到 7 年前
        1
  •  1
  •   Manoj Choudhari    7 年前

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

    希望这有帮助。

    您可以按所示添加URL

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

    大括号内的标记(…})定义路由参数 如果路由匹配,则绑定。您可以定义多个路由 路由段中的参数,但它们必须用文本分隔 价值。例如,controller=home action=index不是有效的 路由,因为控制器和 {Actudi}。这些路由参数必须具有名称,并且可能具有 指定了其他属性。

        2
  •  1
  •   Alexandr Sulimov    7 年前
    public enum EnumReviewStatus
    {
        Overdue = 4,
    }
    
    public IActionResult Index(EnumReviewStatus? statusFilter = null)
    

    网址 索引?statusFilter=过期 是工作

    推荐文章