我有一个返回文件的操作。它可以在用户的浏览器中打开它,也可以将它直接下载到他们的 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] 删除。
我来说两句