创建路由以接受特定控制器的两个参数
本文关键字:参数 两个 控制器 路由 创建 | 更新日期: 2023-09-27 18:32:20
我的文件控制器中有这个控制器方法:
public ActionResult Download(int id, string filename)
{
var file = _filesRepository.GetFile(id);
// Write it back to the client
Response.ContentType = file.FileMimeType;
Response.AddHeader("content-disposition", "attachment; filename=" + file.FileName);
Response.BinaryWrite(file.FileData);
return new EmptyResult();
}
如果我导航到
/files/download/123?文件名=myimage.png
但我希望它能工作,如果我导航到
/files/download/123/myimage.png
我知道我需要为此创建自定义路线,但我尝试过的所有方法都不起作用。我希望它只接受文件控制器和下载方法的两个参数。这可能吗?
是的,如果您创建新路由,这很容易。 在Global.asax.cs
文件中的默认路由之前,添加以下路由:
routes.MapRoute(
"FileDownload", // Route name
"Files/Download/{id}/{filename}", // URL with parameters
new {
controller = "Files",
action = "Download",
id = UrlParameter.Optional,
filename = UrlParameter.Optional
} // Parameter defaults
);
然后,控制器操作应按当前定义的方式工作。