属性路由 - 我可以为不在路由中的参数指定默认值吗

布里顿

我有一个返回文件的操作。它可以在用户的​​浏览器中打开它,也可以将它直接下载到他们的 PC 上。

public async Task<IActionResult> Open(int Id, bool Download)
{
    ....
}

通过常规路由,我可以定义下载和打开文件的路由:

// Download the file
routes.MapRoute(
    name: "FileDownload",
    template: "File/Download/{id}",
    defaults new { controller "File", action = "Open" download = true });     

// Open file in browser
routes.MapRoute(
    name: "FileView",
    template: "File/View/{id}",
    defaults new { controller "File", action = "Open" download = false }); 

我正在考虑切换到基于属性的路由。我想知道当下载参数不是路由路径的一部分时,是否有任何方法可以为它指定默认值。

[Route("[File/View/{id}", Name="FileView")]
[Route("[File/Download/{id}", Name="FileDownload")]    
梅图莱

我不确定是否可以直接使用,但为什么不简单地使用重载?

你会有这样的事情:

[Route("[File/View/{id:int}", Name="FileView")]
public async Task<IActionResult> View([FromRoute] int id)
{
    return await Open(id, false);
}

[Route("[File/Download/{id:int}", Name="FileDownload")]
public async Task<IActionResult> Download([FromRoute] int id)
{
    return await Open(id, true);
} 

private async Task<IActionResult> Open(int Id, bool Download)
{
    ....
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以为路由中的所有入口点创建默认的OPTIONS方法指令吗?

来自分类Dev

默认值/路由中的可选get参数(带斜杠)

来自分类Dev

空参数的属性路由

来自分类Dev

属性路由中的可选静态值

来自分类Dev

属性路由中的可选静态值

来自分类Dev

为路由中的可选查询参数分配空默认值-Play框架

来自分类Dev

使用属性路由填充默认值RouteValueDictionary

来自分类Dev

使用属性路由填充默认值RouteValueDictionary

来自分类Dev

如何从webapi属性路由参数中的web.config获取默认值

来自分类Dev

Mvc 5属性路由

来自分类Dev

访问routeProvider的路由属性

来自分类Dev

属性路由和CreatedAtRoute

来自分类Dev

属性与常规路由

来自分类Dev

属性路由的区别?

来自分类Dev

Webapi 2属性路由

来自分类Dev

Express TypeScript路由属性

来自分类Dev

访问routeProvider的路由属性

来自分类Dev

带约束的属性路由

来自分类Dev

同时使用属性路由和约定路由

来自分类Dev

同时使用属性路由和约定路由

来自分类Dev

属性路由不存在的路由

来自分类Dev

我可以在laravel路由中省略可选参数吗?

来自分类Dev

在属性路由中使用字典作为输入参数

来自分类Dev

默认路由会干扰ASP.MVC中属性路由中的已定义路径

来自分类Dev

我可以为每个路由器指定特定的“视图”路径吗?

来自分类Dev

Elmah卡在默认路由中吗?

来自分类Dev

ActionLink忽略属性路由设置

来自分类Dev

属性路由-未解析枚举

来自分类Dev

属性路由失败-Web Api