Я наконец-то нашел решение!
Итак, все сводилось к двум вещам: устранение id = UrlParameter.Optional
в RouteConfig.cs, которое вызывает знак вопроса (?), И понимание того, что вы, очевидно, не можете поставить точка (.) внутри скобок {}, потому что если вы попытаетесь это сделать, то скобки {} не примут ввод и, следовательно, путь будет неправильным.
Итак, вот как код выглядит обновленным:
.cs html
//Took out .pdf so that the brackets on the controller can read the input
<a class="dropdown-item" href="@Url.Action("Trees", "Park", new { filename = "name" })" target="_blank">Text</a>
Контроллер:
public ActionResult Trees(string filename)
{
//Added .pdf after the {}, ideally this wouldn't be hard coded but that's out of
//the scope of this question/problem
string path = Server.MapPath(String.Format("~/folder1/folder2/{0}.pdf", filename));
string mime = MimeMapping.GetMimeMapping(path);
return File(path, mime);
}
RouteConfig.cs:
routes.MapRoute(
name: "testing",
url: "Test/{filename}",
defaults: new { controller = "Park", action = "Trees"}
//Remove the URLParameter.Optional
);
Этот результат в открытии PDF успешно И URL должен быть Test / name с sla sh (/), а не с вопросительным знаком (?). Единственное, что нужно исправить, - это чтобы в URL также отображалось расширение (.pdf), но это уже другой вопрос в другой ветке. Но для замены знака вопроса (?) На косую черту (/) И успешного открытия PDF-файла это решение достигается и отвечает на мой оригинальный вопрос.