Html ActionLink没有发布到操作方法

时间:2012-08-24 13:03:19

标签: asp.net-mvc controller form-submit

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

你能告诉我在这里可能出错的地方吗?

谢谢!

1 个答案:

答案 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 */)