3

我有一个视图,用户可以在其中将文件上传到服务器。

在这个视图中,我还有 2 个按钮:一个用于上传文件,另一个用于下载最后导入的文件。

在我的控制器中,我创建了 2 个操作方法:导入和导出。

我如何设法将每个按钮单击重定向到控制器中的正确操作方法?

我试过 Html.ActionLink:

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

Html.ActionLink 没有做到这一点。操作链接将我带到正确的操作方法,但它们正在生成一个 GET 请求。这样 Request.Files.Count = 0。

我需要一个 POST 请求。

注意:最有趣的部分是上传工作正常,但突然停止工作。我已经看到有些人对 FileUpload 任务有同样的问题,其中 Request.Files 总是空的。我认为它是空的,因为你需要一个帖子到服务器。不是吗?

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”表单,然后提交表单。没有动作链接。

<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/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx

于 2010-03-14T23:27:04.857 回答