gpt4 book ai didi

c# - MVC 路由的许多可选参数

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:29 27 4
gpt4 key购买 nike

我正在开发一个能够根据用户选择过滤项目列表的网站,就像您可以过滤亚马逊搜索的结果一样。我不确定如何构建可以接受许多不同参数的路由,而这些参数都不是必需的。

理想情况下,最终结果应该是这样的:

  1. mysite.com/dothings/filter1/sometext/filter5/sometext/filter11/sometext

  1. mysite.com/dothings/filter1:sometext/filter5:sometext/filter11:sometext

对于这两个,我不明白如何设置路由来处理随机过滤器/过滤器的随机排序。

目前我的代码是:

//the real code would have 10+ filters
[Route("filter1/{filter1}/filter2/{filter2}")]
public IActionResult DoThings(string filter1 = null, string filter2 = null)
{
return Ok("Test");
}

但即使使用可选参数,如果我省略 filter1,它也根本不会影响我的操作。

是否有针对此类要求的通用方法?

最佳答案

当您将过滤器排除在外时它没有命中您的操作的原因是因为您将过滤器作为路由的一部分。

如果你有 filter1 = null; filter2 = "foo" 然后是这个场景:

  • 预期: ../filter1/{filter1}/filter2/{filter2}
  • 实际: ../filter1/filter2/foo

相反,您应该使用查询参数。然后查询将如下所示:

mysite.com/dothings?filter1=sometext&filter5=sometext&filter11=sometext

路线看起来像:

[Route("DoThings")]
public IActionResult DoThings(string filter1 = null, string filter2 = null)
{
return Ok("Test");
}

此外,由于您提到这将有 10 个以上的参数,我建议为过滤器创建一个类。例如:

public class MyFilters 
{
public string filter1 { get; set; }
public string filter2 { get; set; }
...
}

[Route("DoThings")]
public IActionResult DoThings(MyFilters filters)
{
return Ok("Test");
}

下面是一些相关的问题:

关于c# - MVC 路由的许多可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com