MVC - ActionLink查找视图而不是调用控制器方法



我想在我的网站上创建链接,点击后,会打开下载窗口(只是一些简单的文本文件)。在几个教程中,我找到了一种方法来做到这一点,然而,由于某种原因,似乎ActionLink不调用我的方法,而是寻找一个视图

我ActionLink

@Html.ActionLink("here is the gpx log", "Download", "Treks")

我在Treks控制器中的下载方法(也添加了使用属性路由的方法,以防混乱)

public FileResult Download()
{
    byte[] fileBytes = System.IO.File.ReadAllBytes(@"~/Files/file.txt");
    string fileName = "file.txt"; //I will add parameters later, once the basics work
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

[Route("treks/{trekname}")] //Route: /Users/12
public ActionResult ShowTrek(string trekname) 
{
    return View(trekname);
}

这就是我总是得到的错误

没有找到"下载"视图或其母视图,或者没有视图引擎支持搜索的位置。

~//长途跋涉/DownloadFiles观点。aspx blahblahbla:

我花了一个小时研究这个问题,但仍然没有接近解决方案。有人知道我哪里出错了吗?谢谢你。

更新:这是我的routecconfig文件的内容

public static void RegisterRoutes(RouteCollection routes)
       {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
       routes.MapMvcAttributeRoutes();
       routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );  
   }
编辑:好的,我调试过了。似乎问题出在属性路由上。由于某些原因,控制器忽略了Download方法,直接转到ActionResult ShowTrek…知道怎么修吗?

尝试将Fileresult替换为FileStreamResult您可能还需要在方法

中创建文件流对象。
new FileStream(fileName, FileMode.Open)
public FileStreamResult Download()
{
 // Your code
}

解决。问题是在属性路由。请参阅Stephen Muecke在评论中的回答

相关内容

  • 没有找到相关文章

最新更新