У меня есть функция в контроллере MVC, которая загружает файл, мне нужно это сделать, когда ему передано имя файла. Эта функция работает, но имя файла является значением AgularJS.
Метод MVC:
public ActionResult DownloadFile()
{
string fileName = "test.txt";
string path = AppDomain.CurrentDomain.BaseDirectory + "/UploadedFiles/";
byte[] fileBytes = System.IO.File.ReadAllBytes(path + fileName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
Это работает при вызове с использованием:
@Html.ActionLink("Click here to download", "DownloadFile", new { })
Мне нужно передать строку в метод, однако, чтобы использовать в качестве "fileName".
Обновлен метод для получения файла fileName:
public ActionResult DownloadFile(string fileName)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "/UploadedFiles/";
byte[] fileBytes = System.IO.File.ReadAllBytes(path + fileName);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
Способы, с помощью которых я пытался вызвать эти методы при передаче агулярного значения, таковы:
1)
@Html.ActionLink("Download File", "DownloadFile", new { id = "{{file}}" })
Этот способ вызывает исключение в методе, так как «fileName» имеет значение null, поэтому путь к файлу не разрешается для загрузки.
2) * * тысяча двадцать один
@Html.ActionLink("Download File", "DownloadFile", "Home", new { id = "{{file}}" })
Практически то же самое, что и первый, но с указанием имени контроллера, дает тот же результат, что и первый.
3)
@{
var url = Url.Action( "DownloadFile2", "Home", new { id = "{{file}}" });
url = HttpUtility.UrlDecode(url);
}
<a data-ng-href="@url">Download File</a>
В результате браузер переходит на страницу с URL-адресом: http://localhost/Home/DownloadFile/test.txt с ошибкой страницы: ошибка HTTP 404.0 - не найдена
Представление может видеть значение и выводить его на страницу в виде обычного текста, но я не могу понять, как отправить значение в метод.