1

ビューでHtml.ActionLinkを使用して、コントローラーアクションメソッドに送信しようとしています。私のアクションの戻りタイプはFileContentResultであるため、これを非ajax送信として実行しています(この情報を提供してくれた@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"オーバーロードを使用しています。これは、誤って生成されたリンクにつながるこのルート値の3番目の引数を処理します。

代わりに、このオーバーロードを使用してください。

@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 に答える