我试图通过在我的视图中使用Html.ActionLink来提交控制器操作方法。我这样做是非ajax提交,因为我的动作的返回类型是FileContentResult(感谢@Darin获取此信息)。但是,我的操作链接未将我的视图发布到Action Method。以下是我的代码
查看代码(部分视图)
@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()....但没有用。
你能告诉我在这里可能出错的地方吗?
谢谢!
答案 0 :(得分:1)
Html.ActionLink
有很多重载,很容易使用错误的重载。您当前正在使用(String, String, Object, Object)重载,它会将您的第三个参数"ui"
视为导致错误生成链接的路由值。
请改用此overload:
@Html.ActionLink("Save", //Link text
"SaveFile", // Action Name
"ui", // Controller name
new { htmlResult="asdf"}, //Route values
null /* html attributes */)