Я хотел бы создать ссылку на моем сайте, которая после щелчка откроет окно загрузки (просто какой-то простой текстовый файл). В ряде учебников я нашел способ сделать это, однако, по какой-то причине, кажется, что ActionLink оленья кожа называют мой метод и ищет зрения вместоMVC - ActionLink ищет представление вместо вызова метода контроллера
My 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:
я провел один час работы над этим и еще не один дюйм ближе к решению. Кто-нибудь знает, где я совершаю ошибку? Большое спасибо
Update: Это содержание моего 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 }
);
}
Edit: Хорошо, я отлажена его. Кажется, проблема заключается в маршрутизации атрибутов. По какой-то причине контроллер проигнорировал метод «Загрузить» и напрямую переходит к ActionResult ShowTrek ... любая идея, как его исправить?
Я просто создаю простое приложение MVC, делаю что-то вроде вас, и он отлично работает (можно перенаправить на Загрузка и отклик на файл). Попробуйте проверить конфигурацию маршрутизации. – Brian
Привет, я не помню, как удалял некоторые вещи из моей конфигурации маршрутизации, только изменение, которое я сделал, заключалось в том, что я включил маршрутизацию атрибутов (я использую маршрутизацию атрибутов в контроллере, но только после метода загрузки). Я добавил содержимое моего файла RouteConfig в вопрос. – Jozef
Ваш метод ShowTrek выкинул бы исключение, потому что он пытался найти представление с именем, равным параметру 'trekname' (который я предполагаю« Download »). Вам нужно использовать 'return View ((object) trekname);' или лучше вернуть модель с свойством для 'trekname' –