3

ユーザーがファイルをサーバーにアップロードできるビューがあります。

このビューには、ファイルをアップロードするボタンと、最後にインポートしたファイルをダウンロードするボタンの 2 つのボタンもあります。

コントローラーで、インポートとエクスポートの 2 つのアクション メソッドを作成しました。

各ボタンのクリックをコントローラーの適切なアクションメソッドにリダイレクトするにはどうすればよいですか?

私は Html.ActionLink を試しました:

<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>

Html.ActionLink はうまくいきませんでした。アクション リンクは正しいアクション メソッドに移動していましたが、GET 要求を生成していました。このように Request.Files.Count = 0.

POST リクエストが必要です。

注: 最も興味深いのは、アップロードが機能していたのに、突然機能しなくなったことです。Request.Files が常に空である FileUpload タスクで同じ問題を抱えている人がいるのを見てきました。サーバーへの投稿が必要なので、空だと思います。ではない?

4

3 に答える 3

9

多分これはあなたにアイデアを与えるでしょう:

ビュー:

<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
    <input type="file" name="file" id="file" /> 
    <input type="submit"  name= "submitImport" value="Upload" />
    <input type="submit" name = "submitExport"  value="Download" />
</form>

コントローラ:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
        {
            if (formCollection["submitImport"] != null)
            {
                return Import(formCollection);
            }
             if (formCollection["submitExport"] != null)
            {
                return Export(formCollection);
            }
        }

エクスポートインポートが適切なアクションです

于 2010-03-14T23:56:37.607 に答える
2

「multipart/form-data」フォームを使用して、フォームを送信する必要があります。ActionLinkはありません。

<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
    <input type="file" name="file" id="file" /> 
    <input type="submit" value="Upload" />
</form>
于 2010-03-14T23:28:48.193 に答える
1

アップロード用の POST リクエストを生成するには、File Input フォーム要素を使用して、通常どおりサーバーにポスト バックします。

http://www.w3schools.com/jsref/dom_obj_fileupload.asp

Scott Hanselman によるこのブログ投稿をご覧ください。 http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCInsourcingTestsAndMocks.aspx

于 2010-03-14T23:27:04.857 に答える