0

我想在我的网站上创建链接,点击后会打开下载窗口(只是一些简单的文本文件)。在几个教程中,我找到了一种方法,但是,由于某种原因,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);
}

这是我总是得到的错误

未找到“下载”视图或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置..

~/Views/Treks/DownloadFiles.aspx blahblahbla:

我花了一个小时来解决这个问题,但离解决方案还差一英寸。有人知道我在哪里犯错吗?非常感谢

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

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 }
       );  
   }

编辑:好的,我调试了它。似乎问题出在属性路由中。出于某种原因,控制器忽略了下载方法并直接进入 ActionResult ShowTrek ......知道如何解决它吗?

4

2 回答 2

0

尝试替换FileresultFileStreamResult 您可能还需要在您的方法中创建文件流对象

new FileStream(fileName, FileMode.Open)

public FileStreamResult Download()
{
 // Your code

}
于 2016-09-26T07:02:27.340 回答
0

解决了。问题出在属性路由中。请在评论中查看 Stephen Muecke 的回答

于 2016-09-26T07:48:36.413 回答