Я пытаюсь передать метод действия контроллера, используя Html.ActionLink, на мой взгляд. Я делаю это как отправку без использования ajax, потому что тип возврата моего действия - FileContentResult (спасибо @Darin за эту информацию). Однако моя ссылка на действие не отправляет мое мнение в метод действий. Ниже мой код
Код представления (частичное представление)
@Html.ActionLink("Save", "SaveFile", "ui", new { htmlResult="asdf"})
Здесь UI - это имя контроллера, SaveFile - имя метода.
Метод контроллера
public FileContentResult SaveFile(string htmlString)
{
...
...
pdfBytes = pdfConverter.GetPdfBytesFromHtmlString(html);
var cd = new ContentDisposition
{
FileName = "MyFile.pdf",
Inline = false
};
Response.AddHeader("Content-Disposition", cd.ToString());
return File(pdfBytes, "application/pdf");
}
Когда я нажимаю тот же URL-адрес из адресной строки браузера, он попадает и также без проблем возвращает файл pdf. То же самое не происходит через ссылку действия. Я также попытался поместить ссылку на действие внутри @using Html.BeginForm () .... но бесполезно.
Подскажите, пожалуйста, где я здесь делаю не так?
Благодарность!
1 ответ
Html.ActionLink
имеет много перегрузок, и очень легко использовать неправильную. В настоящее время вы используете (String, String, Object, Object ), которая обрабатывает ваш третий аргумент "ui"
в значениях этого маршрута, что приводит к неверно сгенерированной ссылке.
Вместо этого используйте эту перегрузку:
@Html.ActionLink("Save", //Link text
"SaveFile", // Action Name
"ui", // Controller name
new { htmlResult="asdf"}, //Route values
null /* html attributes */)
Похожие вопросы
Новые вопросы
asp.net-mvc
ASP.NET MVC Framework - это платформа и инструмент веб-приложений с открытым исходным кодом, которые реализуют версию шаблона модель-представление-контроллер (MVC), адаптированную к веб-приложениям и построенную на основе технологии ASP.NET.