在ASP.NET中执行属性路由时,如何从url作为操作参数检索后缀

彼得

给定ASP.Net Core中的属性路由(但我想MVC和WebAPI的工作方式相同),我希望能够执行以下操作:

[Route("api/[controller]")]
public class SampleController : Controller {
    // GET api/sample/123e4567-e89b-12d3-a456-426655440000/folder/subfolder/file.css
    [HttpGet("{id}")] // this is wrong, how should it be written correctly?
    public string Get(Guid id, string urlSuffix) {
        return null; // return stuff based on the id and the full url
    }
}

在以comment(api/sample/123e4567-e89b-12d3-a456-426655440000/folder/subfolder/file.css为例的URL中,SampleController.Get应使用以下参数调用方法:

  • ID: 123e4567-e89b-12d3-a456-426655440000
  • urlSuffix:folder/subfolder/file.css/folder/subfolder/file.css(我不太喜欢领导者/

如果还有其他查询参数,则这些参数也应包含在后缀中。

我考虑过使用原始请求URL,但是我仍然需要一种方法来指定要执行的操作,而我想到的一切都为时已晚,ASP.Net已经发现给定的URL没有任何URL。行动。

我想为此使用控制器,而不是在ASP.Net Core执行管道中添加一些“原始”代码。

更新:

这个确切的示例不适用于asp.net核心dotnet核心和kestrel服务:

[Route("api/[controller]")]
public class SampleController : Controller
{
    // GET api/values/5
    [HttpGet("{id}/{urlSuffix}")]
    public object Get(string id, string urlSuffix)
    {
        return new {id, urlSuffix};
    }
}

当我打电话时,http://localhost:5000/api/sample/some-id/folder我得到正确的结果,但是当我打电话时,http://localhost:5000/api/sample/some-id/folder/subfolder/file.extension我得到404错误。

恩科西

引用:处理URL模式中可变数量的段

有时,您必须处理包含可变数量的URL段的URL请求。定义路由时,可以指定如果URL的段数大于模式中的段数,则多余的段数将被视为最后一段的一部分。要以这种方式处理其他段,请在最后一个参数上标记一个星号(*)。这称为全部参数。具有包罗万象参数的路由还将与不包含最后一个参数任何值的URL匹配。

您的模板和占位符将更改为...

[HttpGet("{id:guid}/{*urlSuffix}")]

给定以下URL ...

"api/sample/123e4567-e89b-12d3-a456-426655440000/folder/subfolder/file.css"

然后

  • id = 123e4567-e89b-12d3-a456-426655440000
  • urlSuffix = "folder/subfolder/file.css"

由于/模板已经是模板的一部分,因此将其从urlSuffix参数中排除

*urlSuffix充当捕获所有后一切{id}/在URL中。如果还有其他查询参数,这些参数也将包含在其中urlSuffix

由于出现示例网址找不到匹配的路由,因此出现了not found错误api/sample/{id}

我包括了:guid基于您的原始示例路由约束,示例期望Guidforid参数。

如果id不会Guid总是,则可以删除该约束,它将在更新后的示例中起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ASP.NET中执行属性路由时,如何从url作为操作参数检索后缀

来自分类Dev

如何检索在asp文件的url中传递的参数

来自分类Dev

ASP.NET中的调试属性路由

来自分类Dev

如何在ASP.NET MVC中获取不带参数的操作的URL

来自分类Dev

如何在ASP.NET MVC中获取不带参数的操作的URL

来自分类Dev

ASP.Net Web API 2属性路由的HTTP POST操作未获取正确的参数

来自分类Dev

如何从asp.net中的路由获取原始URL?

来自分类Dev

在Asp.Net WebApi操作中使用FromUri属性时,如果没有路由或查询字符串参数,是否可以强制实例化复杂的类?

来自分类Dev

如何在ASP中执行按钮操作?

来自分类Dev

在ASP.NET Web API 2中自动将操作名称设置为路由属性

来自分类Dev

URL重写或在ASP.NET Web API中配置路由时发生冲突的路由

来自分类Dev

在URL重写或在ASP.NET Web API中配置路由时发生冲突的路由

来自分类Dev

将Angularjs表达式/变量传递给asp.net mvc操作链接作为路由参数

来自分类Dev

ASP.NET Web API中带有可选参数的属性路由

来自分类Dev

在asp.net中传递URL参数

来自分类Dev

ASP.NET:URL中带有反斜杠“ \”的路由参数

来自分类Dev

ASP.NET MVC中的动态路由操作名称

来自分类Dev

隐藏来自ASP.NET MVC中的操作的路由值?

来自分类Dev

如何在C#ASP.NET MVC3中为特定操作映射路由?

来自分类Dev

在ASP.NET MVC 5中路由可选参数

来自分类Dev

参数中的 ASP.NET MVC 小写路由

来自分类Dev

忽略 ASP.NET MVC WebAPI 中的路由参数

来自分类Dev

ASP.NET MVC:检索存储在属性中的信息

来自分类Dev

ASP.NET MVC路由与特定操作

来自分类Dev

ASP.NET MVC路由的操作前缀

来自分类Dev

使用ASP.NET友好URL时如何忽略某些路由?

来自分类Dev

ASP.NET Core 1.0中的属性路由

来自分类Dev

使用ASP.Net中的URL路由请求页面时,Javascript无法解析正确的图像路径

来自分类Dev

ASP.net MVC路由参数

Related 相关文章

  1. 1

    在ASP.NET中执行属性路由时,如何从url作为操作参数检索后缀

  2. 2

    如何检索在asp文件的url中传递的参数

  3. 3

    ASP.NET中的调试属性路由

  4. 4

    如何在ASP.NET MVC中获取不带参数的操作的URL

  5. 5

    如何在ASP.NET MVC中获取不带参数的操作的URL

  6. 6

    ASP.Net Web API 2属性路由的HTTP POST操作未获取正确的参数

  7. 7

    如何从asp.net中的路由获取原始URL?

  8. 8

    在Asp.Net WebApi操作中使用FromUri属性时,如果没有路由或查询字符串参数,是否可以强制实例化复杂的类?

  9. 9

    如何在ASP中执行按钮操作?

  10. 10

    在ASP.NET Web API 2中自动将操作名称设置为路由属性

  11. 11

    URL重写或在ASP.NET Web API中配置路由时发生冲突的路由

  12. 12

    在URL重写或在ASP.NET Web API中配置路由时发生冲突的路由

  13. 13

    将Angularjs表达式/变量传递给asp.net mvc操作链接作为路由参数

  14. 14

    ASP.NET Web API中带有可选参数的属性路由

  15. 15

    在asp.net中传递URL参数

  16. 16

    ASP.NET:URL中带有反斜杠“ \”的路由参数

  17. 17

    ASP.NET MVC中的动态路由操作名称

  18. 18

    隐藏来自ASP.NET MVC中的操作的路由值?

  19. 19

    如何在C#ASP.NET MVC3中为特定操作映射路由?

  20. 20

    在ASP.NET MVC 5中路由可选参数

  21. 21

    参数中的 ASP.NET MVC 小写路由

  22. 22

    忽略 ASP.NET MVC WebAPI 中的路由参数

  23. 23

    ASP.NET MVC:检索存储在属性中的信息

  24. 24

    ASP.NET MVC路由与特定操作

  25. 25

    ASP.NET MVC路由的操作前缀

  26. 26

    使用ASP.NET友好URL时如何忽略某些路由?

  27. 27

    ASP.NET Core 1.0中的属性路由

  28. 28

    使用ASP.Net中的URL路由请求页面时,Javascript无法解析正确的图像路径

  29. 29

    ASP.net MVC路由参数

热门标签

归档