【问题标题】:Html ActionLink not posting to action methodHtml ActionLink 未发布到操作方法
【发布时间】:2012-08-24 13:03:18
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 如果你查看html源代码,你能发布生成的链接是什么样子的吗?
  • @nemesv:这里是保存

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


【解决方案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 */) 

【讨论】:

  • 实现上述重载后,这里是生成的链接 还是不行
  • 哦..它现在在我的主页上工作!当我把它放在局部视图中时,它不起作用。
  • 因为我使用 JQuery 对话框将部分视图显示为模态对话框。如果我把它设为 modal=false 那么它就可以了。感谢您的解决方案。这是正确的。
  • @AnilSoman 很高兴您的问题得到解决。如果有帮助,也许你应该考虑接受我的回答。
  • 肯定会的。我只是想解决模态对话框的问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2013-03-16
相关资源
最近更新 更多