Вы вообще хотите отобразить имя файла на физический путь на сервере, например, Предположим, что пользователь выбирает файл Foo.pdf
и все файлы содержимого находятся в папке ~/Content
:
public FileResult download(string path)
{
string actualPath = Server.MapPath("~/Content/" + path);
return File(actualPath, "application/pdf", Server.UrlEncode(path));
}
Однако, с точки зрения безопасности, что позволяет пользователю непосредственно указать имя файла сомнительна - вместо этого вы можете рассмотреть другие альтернативы, такие как таблица или словарь доступных файлов, и заставляют браузер выбирать один из доступных файлов с помощью ключа - таким образом злоумышленники не могут фишировать для файлов, которые не предназначены для обслуживания.
Edit, после того, видя, что OP хочет Ajax
Ajaxing документа вниз должен работать, хотя загрузив таким образом, не будет оказывать PDF - вы должны передать документ в скриптовый просмотр PDF или похожие.
Вместо ajaxing документ, вы можете вместо этого генерировать простую ссылку, кнопку или изображение, которое пользователь может нажать на, чтобы вызвать действие контроллера и загрузить PDF:
@Html.ActionLink("Click to download", "download", new {path = "MyNicePDF.pdf"})
ли код попал в контроллер? – Aravindan