1

我正在尝试通过在我的视图中使用 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().... 但没有用。

你能告诉我我可能在哪里做错了吗?

谢谢!

4

1 回答 1

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 */) 
于 2012-08-24T13:11:44.690 回答