【问题标题】:MVC - ActionLink looks for a view instead of calling of controller methodMVC - ActionLink 寻找视图而不是调用控制器方法
【发布时间】:2016-09-26 15:48:36
【问题描述】:

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

【问题讨论】:

  • 我只是创建了一个简单的 MVC 应用程序,像你一样做一些事情,它工作正常(可以路由到下载和响应文件)。尝试检查您的路由配置。
  • 嗨,我不记得从我的路由配置中删除了一些东西,我所做的唯一更改是我启用了属性路由(我在控制器中使用属性路由,但仅在下载方法之后)。我将 RouteConfig 文件的内容添加到问题中。
  • 您的ShowTrek 方法会抛出异常,因为它会尝试查找名称等于参数trekname 的视图(我假设它是“下载”)。您需要使用return View((object)trekname); 或更好地返回具有trekname 属性的模型
  • 谢谢,我会做的——问题出在属性路由上。或者将下载功能移动到另一个控制器..

标签: asp.net-mvc download actionlink fileresult


【解决方案1】:

尝试将Fileresult 替换为FileStreamResult 您可能还需要在方法中创建文件流对象

new FileStream(fileName, FileMode.Open)

public FileStreamResult Download()
{
 // Your code

}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 2018-01-14
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多